Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Summieren im Bericht mit Problem

Begonnen von HeZa, November 13, 2017, 09:53:42

⏪ vorheriges - nächstes ⏩

HeZa

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

MzKlMu

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.
Gruß Klaus

Lachtaube

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
Grüße von der (⌒▽⌒)

HeZa

#3
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
????

HeZa

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.

Lachtaube

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.
Grüße von der (⌒▽⌒)

HeZa

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


Lachtaube

Dann liegt der Wert aber schon als 0,33 und nicht als 0,33333... usw. in den Datenfeldern vor - alles andere wäre Zauberei.
Grüße von der (⌒▽⌒)

MzKlMu

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
Gruß Klaus

HeZa

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.

MzKlMu

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.
Gruß Klaus