Karolus hat geschrieben:Nach deinem Makrocode steckt in der Variablen v ein Fliesskommawert, der lediglich in der msgbox durch deine deutsche Lokalisierung mit Komma dargestellt wird.
Leider wird der Wert über den DatabaseContext auch mit einem Komma an die Datenbank weitergegeben und verursacht dadurch selbstverständlich einen Fehler. Traurig, aber OOo-Alltag.
Schliesslich muss man seinen Fliesskommawert ja in einen (SQL-)String packen, der an die Datenbank durchgereicht wird, dabei wird durch die implizite Typkonvertierung (Double->String) ebenso wie in der MsgBox das Komma als Dezimaltrennzeichen verwendet.
MikeRo hat geschrieben:Das bringt mich auf den richtigen Weg, aber dann habe ich darudch, das in der Zelle eigentlich 0,621 steht den Wert 0.621 denn kann ich aber nicht mit 100 Multiplizieren
Tatsächlich, hatte ich gar nicht dran gedacht.
Dann schieb nach der Multiplikation mal noch die Zeile
ein, so funktioniert es zumindest bei mir problemlos.
Nachtrag:
Mit preparedStatements werden auch unformatierte Fliesskommawerte problemlos übernommen
Code: Alles auswählen
oDatabaseContext = CreateUNOService("com.sun.star.sdb.DatabaseContext")
oDatabase = oDatabaseContext.getByName("xy")
oConnection = oDatabase.getConnection("","")
oPreparedStatement = oConnection.prepareStatement("UPDATE ""meineTabelle"" SET ""meineSpalte"" = ? WHERE ""ID"" = 0")
oPreparedStatement.setDouble(1,myValue)
oPreparedStatement.executeUpdate
[quote="Karolus"]Nach [u]deinem[/u] Makrocode steckt in der Variablen v ein Fliesskommawert, der lediglich in der msgbox durch deine deutsche Lokalisierung mit Komma dargestellt wird.[/quote]
Leider wird der Wert über den DatabaseContext auch mit einem Komma an die Datenbank weitergegeben und verursacht dadurch selbstverständlich einen Fehler. Traurig, aber OOo-Alltag.
Schliesslich muss man seinen Fliesskommawert ja in einen (SQL-)String packen, der an die Datenbank durchgereicht wird, dabei wird durch die implizite Typkonvertierung (Double->String) ebenso wie in der MsgBox das Komma als Dezimaltrennzeichen verwendet.
[quote="MikeRo"]Das bringt mich auf den richtigen Weg, aber dann habe ich darudch, das in der Zelle eigentlich 0,621 steht den Wert 0.621 denn kann ich aber nicht mit 100 Multiplizieren[/quote]
Tatsächlich, hatte ich gar nicht dran gedacht.
Dann schieb nach der Multiplikation mal noch die Zeile
[code]myValue = Replace(myValue,",",".")[/code]
ein, so funktioniert es zumindest bei mir problemlos.
Nachtrag:
Mit preparedStatements werden auch unformatierte Fliesskommawerte problemlos übernommen
[code] oDatabaseContext = CreateUNOService("com.sun.star.sdb.DatabaseContext")
oDatabase = oDatabaseContext.getByName("xy")
oConnection = oDatabase.getConnection("","")
oPreparedStatement = oConnection.prepareStatement("UPDATE ""meineTabelle"" SET ""meineSpalte"" = ? WHERE ""ID"" = 0")
oPreparedStatement.setDouble(1,myValue)
oPreparedStatement.executeUpdate[/code]