[Gelöst] Value Formatieren , durch . ersetzen für DB-Abfrage

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [Gelöst] Value Formatieren , durch . ersetzen für DB-Abfrage

Re: Value Formatieren und , durch . ersetzen für DB-Abfrage

von MikeRo » Mi, 20.04.2011 11:44

Super Danke!

Re: Value Formatieren und , durch . ersetzen für DB-Abfrage

von DPunch » Mi, 13.04.2011 11:37

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

Code: Alles auswählen

myValue = Replace(myValue,",",".")
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

von MikeRo » Mi, 13.04.2011 11:24

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

von MikeRo » Mi, 13.04.2011 11:22

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

von Karolus » Mi, 13.04.2011 11:19

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

von DPunch » Mi, 13.04.2011 11:17

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

[Gelöst] Value Formatieren , durch . ersetzen für DB-Abfrage

von MikeRo » Mi, 13.04.2011 11:07

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.

Nach oben