2.6k Aufrufe
Gefragt in Datenbanken von
Hallo Gemeinde,

ich habe mit folgendem Code ...

Dim z%
Me.SummeStunden = 0
For z = 0 To Stundenliste.ListCount - 1
Me.SummeStunden = Me.SummeStunden + Val(Stundenliste.Column(4, z))
Next z

... die Summe eines Listenfelds berechnet, was soweit auch funktioniert. AAAAABER: sämtliche Ergebnisse mit Dezimalstellen werden komplett ignoriert, also z. B.:

Zeile 1: 4,25
Zeile 2: 1,00
Zeile 3: 1,75
Zeile4: 2,00

-> ergibt ein Ergebnis von: 3.

In der Tabelle ist das Feld "Stundenanzahl" als "Zahl" mit Feldgröße "Double", Format "Allgemeine Zahl", Dezimalstellenanzeige "2" angelegt.

Hat jemand eine Idee, wie ich zu einem richtigen und vollständigen Ergebnisse komme?

Vielen Dank im Voraus!

5 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Torillo,

probiere mal:
Me!SummeStunden = Me!SummeStunden + CDbl(Stundenliste.Column(4, z))
Ach ja, der "Punkt" solltest du nur für Eigenschaften des Objekts nehmen. Für Felder anzusprechen, ist es besser, das Ausrufezeichen zu verwenden.

Gruß
Ralf
0 Punkte
Beantwortet von
Hallo Ralf,

danke für Deine Hilfe, das probiere ich dann aus. Zwischenzeitlich hat sich das Problem - nach einem 3/4 Tag suchen - lösen lassen, und zwar so:

Dim z As Integer
Dim Summe As Single

Summe = 0

For z = 0 To Stundenliste.ListCount - 1
Summe = Summe + Val(Str(Stundenliste.Column(4, z)))
Next z

Me!SummeStunden = Summe

--> nach Einfügen des Str in der Zeile "Summe = Summe + Val(Str(Stundenliste.Column(4, z)))" hat´s das richtige Ergebnis ausgeworfen!

Halleluja!
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Torillo,

das Problem ist die englische (.) kontra deutsche (,) Schreibweise des Dezimalzeichens. Erlaube dir mal den Spaß und stelle in der Systemsteuerung unter "Regions- und Sprachpotionen" (Vista) auf englisch um, du wirst sehen, dass Programme plötzlich nicht mehr funktionieren, wenn du mit dezimalzahlen arbeitest, oder du hast dich echt beherscht bei der Programmierung. Noch ein Tipp: Schaue dir die Teilterme im Direktfenster an, so ersparst du dir viele Fehlversuche.
Noch viel Erfolg bei deinen weiteren Entwicklungen.

gruß
Ralf
0 Punkte
Beantwortet von
Hallo Ralf,

ich bin glücklicher XP-Nutzer, hab mich bisher erfolgrich vor Vista gedrückt ;-)

Was das "oder du hast dich echt beherrscht bei der Programmierung" angeht: Access ist Neuland für mich, das meiste krieg ich mit Hängen und Würgen hin, wenn ein Profi mal den Code anschauen würde, würde es ihm kalt den Rücken runterlaufen!

Das mit dem Direktfenster hab ich auch noch nicht gerafft, bei mir gibt´s da keine "Ergebnisse". Aber das schau ich mir auf jeden Fall nochmal an, ist sicher eine große Erleichterung!

Ich hab auch schon ein neues Problem, werde ich dann mal extra posten -> wenn Du willst, schau mal rein :-)

Danke nochmal und Gruß
Torsten
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Torsten,

die Sache mit dem Direktfenster solltest du dir Anschauen. Wenn du im VB-Modul bist, kannst du dieses Fenster mit Menü "Ansicht-->Direktfenster" einblenden, falls du es noch nicht hast. Im Direktfenster kannst du einfache Rechnungen ausführen, Bsp.:
? 3+4
oder dir Inhalte von Variablen anschauen, Bsp.:
? Me!SummeStunden
. Wenn du in den Debug-Modus gehst (setzte z.B. mit der Funktionstaste F8 in deinem Code in der Zeile
Summe = Summe + Val(Str(Stundenliste.Column(4, z)))
einen "Breakpoint". Dann kannst du mit F5 das Programm bis dahin laufen lassen und dann mit F8 im einzelschritt das Programm weiter ausführen. Gehst du dabei mit der Maus über die Variablen, wird dir auch der aktuelle Wert angezeigt. Alternativ gibst du wie oben beschrieben, die Ausdrücke im Direktfenster ein. Probiere es aus, das lohnt sich.

Gruß
Ralf
...