Neuigkeiten:

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

Mobiles Hauptmenü

Textfeld per CDbl im String umwandeln funktioniert nicht

Begonnen von saarmike, Juni 02, 2014, 14:21:31

⏪ vorheriges - nächstes ⏩

saarmike

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?

MzKlMu

Hallo,
zeige bitte den SQL String vollständig und keine Ausschnitte.
Gruß Klaus

saarmike

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

MaggieMay

Hallo,

du musst doch nur die Klammern richtig setzen:Sum(CDbl(bestand.Beitrag)) AS MBDie eckigen Klammern waren fehl am Platz bzw. falsch platziert.
Freundliche Grüße
MaggieMay

saarmike

Hallo MaggieMay,

so hatte ich es auch schon, aber dann kommt die Meldung:

Laufzeitfehler
Datentypenkonflikt in Kriterienausdruck

Hondo

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

MaggieMay

Welche Werte treten denn in dem Datenfeld auf? Vielleicht hilft hier die NZ-Funktion:Sum(CDbl(NZ(bestand.Beitrag,0))) AS MB
Freundliche Grüße
MaggieMay

saarmike

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!!

MaggieMay

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?
Freundliche Grüße
MaggieMay

saarmike

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 :-(

MzKlMu

Hallo,
hast Du ein deutsches oder englisches Access?
Wie sind die Ländereinstellungen der Systemsteuerung (Dezimaltrennzeichern, Tausendertrennzeichen) ?
Gruß Klaus

saarmike

Hallo MzKlMu,

deutsches Access und alles korrekt eingestellt in der Systemsteuerung.

DF6GL

#12
Hallo,

welchen Datentyp hat das Feld "Beitrag" in Tabelle "Bestand" ?

PS: Crosspostings sind unerwünscht!
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MzKlMu

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

DF6GL

Hallo,

ok, hab ich nicht gelesen.. aber vermutet...  dann muss der String halt präpariert werden:

Sum(val(replace(bestand.Beitrag,",","."))) AS MB

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access