Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Typkonvertierung bei SQL

32 views
Skip to first unread message

Peter Veith

unread,
Oct 5, 2002, 4:22:16 AM10/5/02
to
Hallo,

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

MIPS

unread,
Oct 5, 2002, 4:42:57 AM10/5/02
to
Hi Peter,

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

Peter Veith

unread,
Oct 5, 2002, 4:55:57 AM10/5/02
to
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

"MIPS" <in...@mips-systemtechnik.de> schrieb im Newsbeitrag
news:evOZOsEbCHA.4208@tkmsftngp08...

MIPS

unread,
Oct 5, 2002, 5:11:31 AM10/5/02
to
Hi Peter

"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

Karl Donaubauer

unread,
Oct 5, 2002, 6:10:37 AM10/5/02
to
Peter Veith schrieb:
> ...

> Das Problem reduziert sich auf die Frage, wie man Kommazahlen in einen
> SQL-Befehl einbauen kann.

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

0 new messages