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

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag 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.
Zuletzt geändert von MikeRo am Mi, 20.04.2011 11:45, insgesamt 1-mal geändert.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

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

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

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

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag 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
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag 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.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

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

Beitrag 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

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
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

Super Danke!
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Antworten