Seite 1 von 1
Typ Konvertierung nach Currency mit negativen Werten ist defekt
Verfasst: Fr 20. Sep 2019, 15:07
von aladin
Hallo.
Bei meiner Umstellung von AOO auf LO (6.2.5.2) unter Gentoo Linux, habe ich festgestellt, das die Konvertierung von negativen Werten, zu Currency fehl schlägt.
Hier ein Stück Test-Code:
Code: Alles auswählen
Sub Test_CCur()
Dim cErgebnis as Currency
Dim sErgebnis as String
Dim cWert1 as Currency
Dim cWert2 as Currency
cWert1=0
cWert2=4.5
cErgebnis=cWert1-cWert2
sErgebnis=CStr(cErgebnis)
print cErgebnis
print CCur(sErgebnis)
End Sub
Kann jemand den Fehler bei sich nachvollziehen?
Gruß
Heiko
Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt
Verfasst: Fr 20. Sep 2019, 15:23
von craig
Hallo Heiko,
CStr ist eine Umwandlung in einen String.
Strings kennen keine negativen Werte.
Statt:
Versuche dies:
Ausserdem ist eine Umwandlung nicht erforderlich, weil Du
im Deklarationsbereich bereits alles als Currency deklariert hast.
Deshalb sollte dies genügen:
Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt
Verfasst: Fr 20. Sep 2019, 16:04
von aladin
Hallo craig.
Da hast Du mich völlig missverstanden.
Ich habe die Test-Routine bewusst so geschrieben, damit man den Fehler reproduzieren kann.
https://help.libreoffice.org/Basic/CCur ... Runtime/de
CCur sollte einen String in der Form "-4.5" in eine Currency-Variable wandeln können.
AOO konnte das fehlerfrei.
LO meckert.
Die Frage ist nun, ob das ein Bug ist. Ich würde sagen ja.
Kurz noch warum ich das brauche:
Der native MySQL-Treiber war schon unter AOO etwas seltsam was Datentypen angeht.
Eigentlich würde ich, wenn ich eine Currency-Variable füttern will, getFloat verwenden.
Code: Alles auswählen
sSQL="select 0-5.2"
oRecord=oResult(sSQL)
While oRecord.next()
' cErgebnis=oRecord.getFloat(1)
sErgebnis=oRecord.getString(1)
Wend
print sErgebnis
print cErgebnis
Nur hat das schon unter AOO und auch jetzt unter LO die Nachkommastellen abgeschnitten.
Wie ich gesehen habe wird an dem MySQL C-Treiber für LO gebaut und ich hoffe, dass das zukünftig besser funktioniert.
Aber CCur sollte trotzdem auch korrekt funktionieren.
Gruß
Heiko
Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt
Verfasst: Fr 20. Sep 2019, 16:44
von craig
Hallo Heiko,
Ok.
Wie folgt:
- AOO 4.1.6 liefert mir bei Ausführung Deines Codes:
- print cErgebnis = -4.5000
- print CCur(sErgebnis) = -4.5000
Beide Meldungen sind meiner Meinung nach falsch.
Currency sollte auf die lokalen Währungseinstellungen zugreifen.
Wenn deutsch, dann wäre diese Meldung richtig:
-4,50 €
Also, keine 4 Nachkommastellen und keinen Dezimaltrenner in Form eines Punktes.
- LibO 6.3.0.4 liefert mir bei Ausführung Deines Codes:
- print cErgebnis = -4.5000
- print CCur(sErgebnis) = Fehlermeldung: Datentypen unverträglich
Beide Meldungen sind meiner Meinung nach falsch.
- Currency sollte auf die lokalen Währungseinstellungen zugreifen.
Wenn deutsch, dann wäre diese Meldung richtig:
-4,50 €
Also, keine 4 Nachkommastellen und keinen Dezimaltrenner in Form eines Punktes.
- Fehlermeldung ist falsch, denn gemäß Hilfe:
- LibO 6.4.0.0.alpha0+ (x64)
Dasselbe Ergebnis wie Version 6.3.0.4
Heiko hat geschrieben:Die Frage ist nun, ob das ein Bug ist. Ich würde sagen ja.
Ich würde sagen, sowohl AOO und LibO haben diesbezüglich einen Bug.
Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt
Verfasst: Fr 20. Sep 2019, 17:52
von aladin
Hallo Craig.
Danke fürs Aufklären!
Das sieht nach einer größeren Baustelle aus.
Dass AOO das Gebietsschema ignoriert hat, hatte ich gar nicht so registriert. Das war wohl mal geplant und ist nicht fertig geworden...
Gruß
Heiko