Neuigkeiten:

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

Mobiles Hauptmenü

DSum rechnet falsch

Begonnen von AMB, August 01, 2013, 16:28:45

⏪ vorheriges - nächstes ⏩

AMB

Hallo Zusammen,

Ich habe in einer Abfrage (qryReparaturen) die Dauer (ReparaturDauer) von Reparaturen berechnet.
Im Bericht würde ich gerne die Gesamtdauer aller Reparaturen per VBA anzeigen lassen:

Reports(Bericht).Report("txtDauer").Value = DSum("ReparaturDauer", "qryReparaturen")

Statt "51" kommt dort jedoch "258.000.000" raus.

Was läuft hier verkehrt? Hat jemand eine Idee?

Stapi

Hallo QMB

Dein Code ist wie wenn mann von der Ferne in eine Glaskugel schaut. Welche Eigenschaft haben deine Felder? Wie werden die Stunden geschrieben mit Komma, mit Punkt ..... ?
Grüße aus dem schönen NRW
Stefan

AMB

Hallo,

Berechnet wird: ReparaturEnde-ReparaturBeginn (04.02.2013-28.01.2013), beide Felder sind als Datumsfelder formatiert. Das Ergebnis wird als Ganzzahl (7) angezeigt.
Das Textfeld im Bericht hat kein besonderes Format.

Ich habe die gleiche Geschichte schon an anderer Stelle gemacht und da funktioniert es. Ich habe jetzt grad mal die Pfadangaben davon eingesetzt und es funktioniert.

Ich würde deshalb vermuten, dass es an der Abfrage liegt. Aber was ist daran verkehrt?

DF6GL

Hallo,

es wäre sinnvoll,


-- den SQL-String der Berichtsabfrage zu posten
-- zu erwähnen, WO (in welcher Ereignisprozedur) der Ausdruck steht
-- zu erklären, was   mit  "mal die Pfadangaben davon eingesetzt und es funktioniert."   gemeint ist.

AMB

Ok, ich versuch es nochmal:

Es gibt eine Tabelle (tblReparaturen) in der sind diverse Felder (ReparaturID, ReparaturBeginn, ReparaturEnde, etc.). Bei den Feldern ReparaturBeginn und ReparaturEnde handelt es sich jeweils um Datumsfelder.

Aufgrund dieser Tabelle wurde eine Abfrage erstellt (qryReparaturen). In der Abfrage wurde dann die Reparaturdauer berechnet (ReparaturDauer: [ReparaturEnde]-[ReparaturBeginn]).
Die Ergebnisse, die in der Abfrage angezeigt werden sind korrekt.

Nun wurde ein ungebunder Bericht erstellt (der muss auch ungebunden bleiben!!!). Im Bericht wurde dann ein ungebundenes Textfeld (txtDauer) erstellt, dass die Gesamtdauer aller Reparaturen anzeigen soll. Dieses Textfeld wird beim Laden des Berichts per VBA gefüllt. Das Textfeld hat kein besonderes Format.
Hier der Code zum Füllen des Textfeldes: Reports(Bericht).Report("txtDauer").Value = DSum("ReparaturDauer", "qryReparaturen")

Eigentlich sollte nun "51" im Textfeld stehen, jedoch steht dort "258000000".

Diese Geschicht habe ich schonmal gemacht. Da ging es nicht um Reparaturen sondern um Massnahmen. (Folglich: tblMassnahmen, qryMassnahmen, etc.) Das hat bei den Massnahmen auch einwandfrei funktioniert.
Nun habe ich mal den Code abgeändert: Reports(Bericht).Report("txtDauer").Value = DSum("MassnahmeDauer", "qryMassnahmen")
Im Bericht der Reparaturen wird mir die korrekte Gesamt-Massnahmendauer angezeigt. Daher vermute ich, dass der Fehler in der Abfrage liegt. Aber ich weiß nicht wo!?!

Ich hoffe, das ist nun verständlich gewesen und dass jetzt jemand helfen kann.

DF6GL

Hallo,

Warum beantwortest Du meine Fragen nicht?



Die Zuweisung sollte  so erfolgen:

Sub Report_Load()  ' nur bei >=A2007 vorhanden
Me!txtDauer = DSum("ReparaturDauer", "qryReparaturen")
End Sub


Dsum rechnet hier die Summe über ALLE Datensätze, die von der Abfrage geliefert werden. Sind 51 Tage tatsächlich plausibel/authentisch für sämtliche gespeicherten Datensätze?
Die Berechnung in der Abfrage sollte zudem mit der DateDiff-Funktion erfolgen oder die Einzelfelder sollten mit der Int-Funktion zu einen numerischen Wert deklariert werden.



AMB

Guten Morgen,

habe gerade die DateDiff-Funktion genutzt und es funktioniert nun.

DANKE!