Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: HeZa am November 13, 2017, 09:53:42

Titel: Summieren im Bericht mit Problem
Beitrag von: HeZa am November 13, 2017, 09:53:42
Hallo,
ich habe ein Problem mit berechneten Feldern in einem Bericht.

Im Detailbereich befinden sich mehrere berechnete Felder, deren Ergebnis in der zugrundeliegenden Abfrage ermittelt wird.
Im Berichtsfuß möchte ich nun die Summe über eines dieser Felder darstellen  =Summe([Feld])
Leider bekomme ich dort aber nicht das korrekte Ergebnis angezeigt.

Feldinhalte im Detailbereich :  0,55  und 0,13
Summe im Berichtsfuß:          0,67

Das Tabellenfeld welches die Ausgangswerte für meine Berechnung liefert ist ein Zahlenfeld (Single)
In der Abfrage wurde keine Formatierung vorgenommen
Im Bericht formatiere ich die Ergebnisfelder als Festkommazahl mit 2 Kommastellen.
Hat jemand eine Idee was ich hier falsch mache?
Vielen Dank im Voraus!
Herbert
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: MzKlMu am November 13, 2017, 10:29:22
Hallo,
berechnete Felder können nicht summiert werden. In der Summenformel muss die Berechnungsformel wiederholt werden.

Was wird denn in den berechneten Feldern berechnet ?
Können die Berechnungen nicht in die Abfrage verschoben werden ?
Dann könnte man wieder einfach summieren.
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: Lachtaube am November 13, 2017, 10:30:41
Die Rechnung dürfte stimmen. Hingegen rundet das Anzeigeformat der Textfelder die Anzeigen aber nicht den hinterlegten Wert entsprechend der eingestellten Eigenschaft - in Deinem Fall auf zwei Dezimalstellen hinter dem Komma.

Abhängig davon, ob die Einzelfelder exakte Fakten darstellen, oder ob die Summe den Fakt bildet, kannst Du in der Abfrage die Berechnung der Werte runden (akkumuliert allerdings Rundungsfehler), oder die Darstellung der Berechnung unterlassen und nur die Summe aufführen.

Zur Verdeutlichung der Sachlage einige Anweisungen aus dem VBA-Direktbereich:F1# = .545
?F1
0,545
?Format$(F1, "0.00")
0,55

F2# = .127
?F2
0,127
?Format$(F2, "0.00")
0,13

?F1 + F2
0,672
?Format$(F1 + F2, "0.00")
0,67
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: HeZa am November 13, 2017, 12:05:47
Hallo,
Danke erst mal für die Antworten.
@MzKlMu
Freilich kann ich berechnete Felder summieren - ich habs ja im Bericht gemacht - im Berichtsfuß
Die Werte stellen das Ergebnis einer techn. Berechnung dar, die in der zugrundeliegenden Abfrage erledigt wird.
Im Detailbereich des Berichts formatiere ich die Ergebnisse dann auf 2 Nachkommastellen, wobei hier die Rundung passt.
Nur im Summenfeld im Berichtsfuß passt sie dann plötzlich nicht (mehr)

Irgendwie versteh ich das alles nicht ganz.
0,7 (Single) multipliziert mit 3 (Integer) ergibt in der Abfrage 2,09999990463257
0,5 multipliziert mit 3 ergibt 1,5
????
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: HeZa am November 13, 2017, 12:53:49
So, Problem gelöst:

Ich habe nun im Bericht das Summenfeld entfernt und nochmals neu hinzugefügt.
Gleiche Formatierung wie am Anfang - der einzige Unterschied - jetzt wurde das Summenfeld neu manuell erstellt, zuvor vom Assistenten.
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: Lachtaube am November 13, 2017, 13:30:52
An Deine Lösung glaube ich nicht. Stell Dir fiktiv vor, in drei Datensätzen würde 1 durch 3 geteilt werden - zur Anzeige kämen dann drei Detailfelder mit der Anzeige 0,33 und ein Summenfeld mit der Anzeige 1,00.
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: HeZa am November 13, 2017, 15:56:47
Hallo,

@Lachtaube
Glaubst du nicht - ich schon  ;)
Ich möchte im Summenfeld nicht 1,00 stehen haben sondern 0,99 - und das macht's bei mir

Titel: Re: Summieren im Bericht mit Problem
Beitrag von: Lachtaube am November 13, 2017, 17:27:22
Dann liegt der Wert aber schon als 0,33 und nicht als 0,33333... usw. in den Datenfeldern vor - alles andere wäre Zauberei.
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: MzKlMu am November 13, 2017, 17:38:08
Hallo,
Zitat0,7 (Single) multipliziert mit 3 (Integer) ergibt in der Abfrage 2,09999990463257
was erwartest Du vom Datentyp Single ?
Der ist zum genauen rechnen völlig ungeeignet. Nimm mindestens Double oder wenn es noch genauer sein muss Dezimal. Auch Währung würde gehen. Währung kann man auch mit Werten die keine Währung sind verwenden.
Probiere es mal aus.
Das hat auch weniger mit Access zu tun, das ist die Fließkommaproblematik die jeder PC
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: HeZa am November 15, 2017, 15:42:08
Hallo
@MzKlMu
mit dem Tip Double zu verwenden wird richtig gerechnet - DANKE
Nur ... 0,7 mal 3 ergibt 2,1  und nicht 2,099999.....
Komisch, dass das Problem in VBA nicht auftritt, auch nicht mit einer als Single deklarierten Variablen.
Und zu deinem Argument bezgl. genauem Rechnen - ich benötige halt nur 2 Kommastellen und nicht den ganzen Schweif.
Aber mit Double hat sich das ohnehin erledigt.

Zauberei ... nö, Rundungsproblem oder meinetwegen Darstellungsproblem.
Die von mir angesprochene Summenfelder habe ich vom Berichtsassistenten erstellen lassen.
Und die haben ein falsches Ergebnis geliefert.

Fazit, MS hat mit seinem Single-Datentyp in Accesstabellen ein Problem geschaffen.
Titel: Re: Summieren im Bericht mit Problem
Beitrag von: MzKlMu am November 15, 2017, 17:11:15
Hallo,
ZitatMS hat mit seinem Single-Datentyp in Accesstabellen ein Problem geschaffen.
Da irrst Du, der Datentyp Single wurde nicht von MS für Access erfunden. Datentypen sind in der Computertechnik schon in den Anfängen festgelegt worden. Nicht von MS.
Die Genauigkeiten ergeben sich durch die Problematik Kommazahlen als 0 und 1 darzustellen, das wird als Fleißkomma gemacht. Jeder einfache Taschenrechner hat das Problem. Nur da sieht man es nicht weil Taschenrechner natürlich eine viel höhere Genauigkeit verwenden.

Und es liegt am Datenbankentwickler sich über die Datentyp Gedanken zu machen und die Genauigkeit(Datentyp) zu verwenden die notwendig ist.
Im Regelfall rechnet man immer mit der vollständigen Zahl und rundet oder formatiert nur dann wenn man es zur Anzeige benötigt.