habe in Access 2000 eine Tabelle mit einem Feld namens Kosten, das vom Typ
double ist. Ferner gibt es eine Variable namens dBetrag vom Typ double.
Diese enthält zB den Wert 3,1415.
In SQL definiere ich zB UPDATE tabelle SET Kosten = " & dBetrag & ", Faktor
= 4 .... Bei Ausführung dieses Befehls mit doCmd.RunSQl... gibt es eine
Fehlermeldung bezüglich Kommas. Der SQL-Befehl wird nämlich so
interpretiert:
UPDATE tabelle SET Kosten = 3,1415, Faktor = 4 ...
er hat also ein Komma zuviel, das von 3,1415 kommt.
Das Problem reduziert sich auf die Frage, wie man Kommazahlen in einen
SQL-Befehl einbauen kann.
Sicherlich wurde dieses Problem schon oft gelöst, so dass ich auf einen Tipp
hoffen darf.
Besten Dank im voraus.
Peter Veith
SQL erwartet als Dezimaltrenner einen Punkt. Du kannst also Dezimalzahlen
nicht mit Dezimalkomma übergeben, da das Komma als Feldtrenner verwendet
wird. Wandle deshalb den Wert vorher in einen String und ersetze das Komma
dann durch einen Punkt.
sWert = Format(dWert, "0.0000") ' absichtlich keine Tausender-Formatierung
eingebaut, da diese wiederum einen Punkt enthalten könnte
Pos = Instr(sWert,",")
sWert = left(sWert,Pos-1) & "." & Mid(sWert,Pos+1)
Setze dann die Stringvariable in den UPDATE-String ein.
Peter
"Peter Veith" <Peter...@procosoft.de> schrieb im Newsbeitrag
news:anm7fg$h3u$07$1...@news.t-online.com...
"MIPS" <in...@mips-systemtechnik.de> schrieb im Newsbeitrag
news:evOZOsEbCHA.4208@tkmsftngp08...
"Peter Veith" <Peter...@procosoft.de> schrieb im Newsbeitrag
news:anm9el$6kk$00$1...@news.t-online.com...
> Hallo,
> vielen Dank. Die Lösung mit Stringvariable habe ich versucht, erhalte aber
> eine Fehlermeldung: falsche Typen.
> Offenbar kann man in ein Tabellenfeld vom Typ double nicht einen String
> einscheiben.
> Peter Veith
Ersetze einfach in Deinem Code die Anweisung
DoCmd.RunSQL "UPDATE tabelle SET Kosten = " & dBetrag & ", Faktor = 4"
durch
Dim sWert as String
Dim Pos as Integer
sWert = Format(dBetrag, "0.0000")
Pos = Instr(sWert,",")
sWert = left(sWert,Pos-1) & "." & Mid(sWert,Pos+1)
doCmd.RunSQL "UPDATE tabelle SET Kosten = " & sWert & ", Faktor = 4"
Peter
Fand ich auch vor einiger Zeit, deshalb gibt's:
Access-FAQ 6.21 Dezimalzahl an SQL-String übergeben
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
+ Info zu AR4 - aktuelle Ausgabe der Zeitschrift für Access-Entwickler