Hallo zusammen,
ich habe da ein Problem und bekomme es einfach nicht gebacken :-(
Ich habe eine Tabelle wo in einem Feld der Monatsbeitrag steht, aber leider
ist dies ein Textfeld und nicht abänderbar da noch andere Programme darauf
zugreifen.
Nun möchte ich die Monatsbeiträge pro Person zusammenzählen.
Schaut mal, so habe ich es bis jetzt probiert:
Dies hier funktioniert nicht, obwohl es doch so richtig sein müßte?
MySQL = "SELECT verlauf.Benutzernummer, Sum([CDbl(bestand.Beitrag)]) AS MB"
Dies hier funktioniert macht aber erst aus dem Endwert Zahlen und deshalb stimmt
das zusammenrechnen nicht:
MySQL = "SELECT verlauf.Benutzernummer, CDbl(Sum(bestand.Beitrag)) AS MB"
So z.B. zweimal den Betrag 29,49 ergibt mit der obigen Prozedur 58€ und nicht richtigerweise 58,98€!
Kann mir bitte jemand helfen?
Hallo,
zeige bitte den SQL String vollständig und keine Ausschnitte.
Hallo,
sorry hier jetzt der komplette SQL-String:
MySQL = "SELECT verlauf.Benutzernummer, CDbl(Sum(bestand.Beitrag)) AS MB"
MySQL = MySQL & " FROM verlauf INNER JOIN bestand ON verlauf.Vernum = bestand.Vernum"
MySQL = MySQL & " WHERE ((verlauf.Datum) Between " & FormatiereDatum(vDate) & " And " & FormatiereDatum(bDate) & ")"
MySQL = MySQL & " GROUP BY verlauf.Benutzernummer"
MeineRS.Open (MySQL), MeineConn, adOpenStatic, adLockOptimistic
MeineRS1.MoveFirst
Do Until MeineRS1.EOF
MeineRS.Filter = adFilterNone
MeineRS.Filter = "Benutzernummer = " & MeineRS1!AVNr
If MeineRS.EOF And MeineRS.BOF Then
MeineRS1!MB = 0
Else
MeineRS1!MB = MeineRS!MB
End If
MeineRS1.Update
MeineRS1.MoveNext
Loop
MeineRS.Close
Hallo,
du musst doch nur die Klammern richtig setzen:Sum(CDbl(bestand.Beitrag)) AS MBDie eckigen Klammern waren fehl am Platz bzw. falsch platziert.
Hallo MaggieMay,
so hatte ich es auch schon, aber dann kommt die Meldung:
Laufzeitfehler
Datentypenkonflikt in Kriterienausdruck
ganz generell bezogen auf den Thementitel:
alle Konvertierungsfunktionen dessen erster Buchstabe ein "c" ist, wandeln einen String in... um und nicht umgekehrt.
also cDbl, cInt, cLng...
Gruß Andreas
Welche Werte treten denn in dem Datenfeld auf? Vielleicht hilft hier die NZ-Funktion:Sum(CDbl(NZ(bestand.Beitrag,0))) AS MB
Hallo MaggieMay,
wie gesagt es ist ein Textfeld in dem Beiträge gespeichert sind, also zum Beispiel 29,49!
Leider funktioniert es mit NZ auch nicht, selbe Fehlermeldung wie eben!!
In einem Textfeld kann alles mögliche stehen. Es kann doch eigentlich nur so sein, dass es dort Werte gibt, die sich nicht in eine (Dezimal-)Zahl umwandeln lassen. Hast du das mal überprüft?
Hallo Maggie,
ja habe ich, kann mir nur vorstellen das er mit dem Komma irgendwie nicht klarkommt und deshalb
das umwandeln von Text zu Double nicht funktioniert :-(
Hallo,
hast Du ein deutsches oder englisches Access?
Wie sind die Ländereinstellungen der Systemsteuerung (Dezimaltrennzeichern, Tausendertrennzeichen) ?
Hallo MzKlMu,
deutsches Access und alles korrekt eingestellt in der Systemsteuerung.
Hallo,
welchen Datentyp hat das Feld "Beitrag" in Tabelle "Bestand" ?
PS: Crosspostings sind unerwünscht!
Hallo,
das ist ein Feld des Typs Text, hat er zu Anfang schon gesagt.
Zitat von: saarmike am Juni 02, 2014, 14:21:31
Ich habe eine Tabelle wo in einem Feld der Monatsbeitrag steht, aber leider
ist dies ein Textfeld und nicht abänderbar da noch andere Programme darauf
zugreifen.
Hallo,
ok, hab ich nicht gelesen.. aber vermutet... dann muss der String halt präpariert werden:
Sum(val(replace(bestand.Beitrag,",","."))) AS MB
Hallo,
ich hatte das mal getestet, ein String mit Komma wird per CDbl einwandfrei in eine Kommazahl gewandelt. Das Replace hatte ich nicht benötigt. Daher meine Frage nach Systemsteuerung und Access Version.
Hallo Klaus,
kommt drauf an, wo(mit) man das macht... SQL (und auch ODBC- Zugriff) kann mitunter solche interne Konvertierung nicht wie VBA...
Hallo zusammen,
habe es heute Nacht gelöst, aber warum und weshalb die eckigen Klammern den Unterschied machen
weiß ich auch nicht, auf jeden Fall ist das die Lösung und es funktioniert perfekt :)
Sum(CDbl([bestand].[Beitrag])) AS MB
Danke noch mal an alle die mir helfen wollten :)
Hallo,
wenn die Felder (und Tabellen) wirklich so heißen, wie Du es hier gezeigt hast, lag es nicht an den Klammern.