online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon accessy vom 19.06.2020, 15:00 Options

Access Summe Listenfeld mit Nachkommstellen

Hallo Forum,

ich habe ein Problem mit der Summe eines Listenfeldes. In einem Formular wird ein Listenfeld, das u. a. eine Spalte mit Mengenangaben enthält, über mehrere Comboboxen gefitert und in einem gesonderten Feld wird eine Summe gebildet. In den Comboboxen ist der folgende Code "Bei Aktualisierung" hinterlegt:

Dim y%
Me.SummeMenge = 0
For y = 0 To Liste16.ListCount - 1
Me.SummeMenge = Me.SummeMenge + Val(Liste16.Column(5, y))
Next y

Funktioniert soweit alles sehr gut, außer dass bei der Berechnung der Summe die Nachkommastellen der einzelnen Werte nicht berücksichtigt wird. Beispiel: 75,89 + 61,05 + 12,67 = 148,00.

Hat jemand eine Idee, wie ich zu dem richtigen Ergebnis 149,61 komme?

Vielen Dank im Voraus!!!!!!


Antwort schreiben

Antwort 1 von lorf55 vom 21.06.2020, 14:35 Options

Hi accessy,

ich habe mal
Dim y%
Dim s
s = Array("2.3", "2.3", "2.3", "2.3", "2.3")
SummeMenge = 0
For y = 0 To 4
SummeMenge = SummeMenge + Val(s(y))
Next y
Debug.Print SummeMenge
End Function

im Direktfenster mit ?summe() getestet und das ergab 11,5.

Ich kann es mir nur so erklären, dass du entweder
- in Liste16.Column(5, y) nur integer-Werte hast oder
- Me.SummeMenge irgendwo vorher als integer definiert hast.
Versuche doch mal mit Haltepunkt setzen und mit Einzelschritt-Abarbeitung herauszukriegen, wo wann welche Werte auftauchen.

Gruß
lorf

Antwort 2 von accessy vom 23.06.2020, 10:24 Options

Hallo lorf,

vielen Dank für Deine Antwort. Leider treffen Deine beiden Vermutungen nicht zu, denn
- in Liste16.Column(5, y) habe ich Single-Werte (werden im Listenfeld auch mit Nachkommastellen angezeigt)
- das Feld SummeMenge wird vorher gar nicht definiert, wird nur an dieser Stelle zu Berechnung eingesetzt

Hast Du evtl. noch eine andere Idee?

Vielen Dank!
Accessy

Antwort 3 von lorf55 vom 23.06.2020, 15:19 Options

Hallo accessy,
da bleibt eigentlich nur noch die implizite Variablendeklaration durch
Me.SummeMenge = 0
als Ursache. Versuche es doch mal so:
Option explicit
Dim SummeM as Double
Dim y as integer
SummeM = 0
For y = 0 To Liste16.ListCount - 1
SummeM = SummeM + Val(Liste16.Column(5, y))
Next y
Me.[i]Formularfeld[/i] = SummeM
.

Gruß
lorf

Antwort 4 von accessy vom 23.06.2020, 16:54 Options

Hallo lorf,

danke nochmal für den Tip, hab´s gleich ausprobiert, leider mit dem gleichen - falschen - Ergebnis. Ich habe Double und Single ausprobiert. Hast Du vielleicht noch eine Idee, woran es liegen könnte?

Private Sub SF_Artikelbez_AfterUpdate()
DoCmd.Requery "Liste16"

Dim z%
Dim Summe As Double
Me.Summe = 0
For z = 0 To Liste16.ListCount - 1
Me.Summe = Me.Summe + Val(Liste16.Column(8, z))
Next z

Dim y%
Dim SummeMenge As Double
Me.SummeMenge = 0
For y = 0 To Liste16.ListCount - 1
Me.SummeMenge = Me.SummeMenge + Val(Liste16.Column(5, y))
Next y

End Sub

Antwort 5 von lorf55 vom 23.06.2020, 19:34 Options

Hallo accessy,
nimm doch einfach mal das Me. raus bzw. teste doch mal den Code wie ich ihn gepostet habe.

Gruß
lorf

Antwort 6 von accessy vom 23.06.2020, 20:52 Options

Hallo lorf,

ich habs jetzt nochmal genau so getestet, wie du geschrieben hast, aber ohne das Me. wird nichts mehr berechnet und es kommen teilweise auch Fehlermeldungen, wenn ich den Code 1:1 übernehme.

Trotzdem vielen Dank für Deine Hilfe, ich muss nun weiterprobieren!

Vielen Dank!
Accessy

Antwort 7 von lorf55 vom 24.06.2020, 09:31 Options

Hallo accessy,

OK, letzter Versuch:

Private Sub SF_Artikelbez_AfterUpdate()
DoCmd.Requery "Liste16"

Dim z as integer
Dim Summe As Double

Summe = 0
For z = 0 To Liste16.ListCount - 1
Summe = Summe + Val(Liste16.Column(8, z))
Next z
Me.Formularfeld8=Summe

Summe = 0
For z = 0 To Liste16.ListCount - 1
Summe = Summe + Val(Liste16.Column(5, z))
Next z
Me.Formularfeld5=Summe 

End Sub


Das Me verhält sich wie eine implizit definierte variable und enthält den Bezug auf die aktuelle Instanz des Formulars.
Me.Summe=0 bezeichnet deshalb hier m.E. nicht dasselbe, wie Summe und definiert implizit eine Integer-Variable, weil sie mit 0 statt 0.0 initialisiert wurde.
Aber vielleicht liege ich auch daneben.
Wenn es damit auch nicht geht, denn sorry, dass ich dich belästigt habe.

Gruß
lorf

Antwort 8 von lorf55 vom 24.06.2020, 09:34 Options

Ach ja, statt Formularfeld5 und Formularfeld8 müssen natürlich deine ganz speziellen Formularfelnamen stehen.

Antwort 9 von accessy vom 24.06.2020, 14:34 Options

hallo lorf,

ich würde ja so gerne ein positives Feedback geben bei Deinen ganzen Bemühungen, aber leider funktionierts nicht :-(

Vielen, vielen Dank für Deine Hilfe, vermutlich hängt´s woanders. Falls ich es rausfinde, werde ich Dich hier informieren ...

MfG
Accessy

Ähnliche Themen

aktualisiertes Listenfeld in Excel
DiBor  15.04.2007 - 181 Hits - 1 Antwort

abfragen in access
humusandi  14.08.2007 - 60 Hits - 4 Antworten

Abfangen eines nicht markierten Datensatzes im Listenfeld
Jack1109  21.11.2007 - 122 Hits - 1 Antwort

Summe von Zeit bilden
morpheus__85  21.12.2007 - 126 Hits - 4 Antworten

Autovervollständigen im Dropdown-Listenfeld
123letterman  04.04.2008 - 141 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026