Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: saarmike am Juni 02, 2014, 14:21:31

Titel: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 02, 2014, 14:21:31
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?
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MzKlMu am Juni 02, 2014, 14:27:25
Hallo,
zeige bitte den SQL String vollständig und keine Ausschnitte.
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 02, 2014, 14:48:59
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
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MaggieMay am Juni 02, 2014, 14:50:30
Hallo,

du musst doch nur die Klammern richtig setzen:Sum(CDbl(bestand.Beitrag)) AS MBDie eckigen Klammern waren fehl am Platz bzw. falsch platziert.
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 02, 2014, 14:56:41
Hallo MaggieMay,

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

Laufzeitfehler
Datentypenkonflikt in Kriterienausdruck
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: Hondo am Juni 02, 2014, 15:32:50
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
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MaggieMay am Juni 02, 2014, 15:34:46
Welche Werte treten denn in dem Datenfeld auf? Vielleicht hilft hier die NZ-Funktion:Sum(CDbl(NZ(bestand.Beitrag,0))) AS MB
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 02, 2014, 15:51:33
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!!
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MaggieMay am Juni 02, 2014, 16:17:31
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?
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 02, 2014, 16:26:39
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 :-(
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MzKlMu am Juni 02, 2014, 16:32:45
Hallo,
hast Du ein deutsches oder englisches Access?
Wie sind die Ländereinstellungen der Systemsteuerung (Dezimaltrennzeichern, Tausendertrennzeichen) ?
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 02, 2014, 16:41:28
Hallo MzKlMu,

deutsches Access und alles korrekt eingestellt in der Systemsteuerung.
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: DF6GL am Juni 02, 2014, 19:01:21
Hallo,

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

PS: Crosspostings sind unerwünscht!
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MzKlMu am Juni 02, 2014, 19:17:35
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.
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: DF6GL am Juni 02, 2014, 19:24:38
Hallo,

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

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

Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MzKlMu am Juni 02, 2014, 19:31:00
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.
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: DF6GL am Juni 02, 2014, 20:44:18
Hallo Klaus,

kommt drauf an, wo(mit) man das macht... SQL (und auch ODBC- Zugriff) kann mitunter solche  interne Konvertierung nicht wie VBA...
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: saarmike am Juni 03, 2014, 09:40:44
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  :)
Titel: Re: Textfeld per CDbl im String umwandeln funktioniert nicht
Beitrag von: MzKlMu am Juni 03, 2014, 10:05:02
Hallo,
wenn die Felder (und Tabellen) wirklich so heißen, wie Du es hier gezeigt hast, lag es nicht an den Klammern.