Seite 1 von 1
[Gelöst] Value Formatieren , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 13.04.2011 11:07
von MikeRo
Hallo, ich google schon etwas länger aber ich finde einfach keine Lösung für das Problem.
Code: Alles auswählen
For i = 1 to AnzahlRabatte
myCell = oSheet.getCellByPosition(LetzteSpalte+i,10)
myValue = mycell.Value 'In der Zelle ist der Wert. 0,6210
v = MyValue*100 'Ergibt dann natürlich 62,1
aPercentage = v
MsgBox aPercentage 'Spuckt 62,1 aus
Next
Mein Problem ist aber, das ich den Wert "aPercentage" in eine Datenbankabfrage einfüge. Da die Datenbank eine PostGreSQL Datenbank ist muss aber der Wert 62.1 an die Abfrage übergeben werden, mit 62,1 gibt es einen Fehler.
Re: Value Formatieren und , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 13.04.2011 11:17
von DPunch
Aloha
Versuch mal
Code: Alles auswählen
myValue = mycell.Formula'In der Zelle ist der Wert. 0,621
statt
Code: Alles auswählen
myValue = mycell.Value 'In der Zelle ist der Wert. 0,6210
Re: Value Formatieren und , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 13.04.2011 11:19
von Karolus
Hallo
Nach deinem Makrocode steckt in der Variablen v ein Fliesskommawert, der lediglich in der msgbox durch deine deutsche Lokalisierung mit Komma dargestellt wird.
Gruß Karo
Re: Value Formatieren und , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 13.04.2011 11:22
von MikeRo
DPunch hat geschrieben:Aloha
Versuch mal
Code: Alles auswählen
myValue = mycell.Formula'In der Zelle ist der Wert. 0,621
statt
Code: Alles auswählen
myValue = mycell.Value 'In der Zelle ist der Wert. 0,6210
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
Re: Value Formatieren und , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 13.04.2011 11:24
von MikeRo
Karolus hat geschrieben:Hallo
Nach deinem Makrocode steckt in der Variablen v ein Fliesskommawert, der lediglich in der msgbox durch deine deutsche Lokalisierung mit Komma dargestellt wird.
Gruß Karo
Hmm, ich programmiere mal weiter und gucke ob die DB Abfrage es nimmt.
Re: Value Formatieren und , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 13.04.2011 11:37
von DPunch
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
Re: Value Formatieren und , durch . ersetzen für DB-Abfrage
Verfasst: Mi, 20.04.2011 11:44
von MikeRo
Super Danke!