🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Typ Konvertierung nach Currency mit negativen Werten ist defekt

Alles zur Programmierung im LibreOffice.
Antworten
aladin
Beiträge: 37
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Typ Konvertierung nach Currency mit negativen Werten ist defekt

Beitrag von aladin » Fr 20. Sep 2019, 15:07

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

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt

Beitrag von craig » Fr 20. Sep 2019, 15:23

Hallo Heiko,

Code: Alles auswählen

sErgebnis=CStr(cErgebnis)
CStr ist eine Umwandlung in einen String.
Strings kennen keine negativen Werte.

Statt:

Code: Alles auswählen

print CCur(sErgebnis)
Versuche dies:

Code: Alles auswählen

print CCur(cErgebnis)
Ausserdem ist eine Umwandlung nicht erforderlich, weil Du
im Deklarationsbereich bereits alles als Currency deklariert hast.
Deshalb sollte dies genügen:

Code: Alles auswählen

print cErgebnis
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

aladin
Beiträge: 37
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt

Beitrag von aladin » Fr 20. Sep 2019, 16:04

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

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt

Beitrag von craig » Fr 20. Sep 2019, 16:44

Hallo Heiko,

Ok.

Wie folgt:
  1. 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.
  2. 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:
      https://help.libreoffice.org/6.1/de/text/sbasic/shared/03100050.html hat geschrieben:Funktion CCur

      Konvertiert einen Zeichenketten- oder numerischen Ausdruck in einen currency-Ausdruck. Dezimaltrennzeichen und Währungssymbole werden aus dem Gebietsschema entnommen.
  3. 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.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

aladin
Beiträge: 37
Registriert: Di 30. Jul 2019, 15:49
Kontaktdaten:

Re: Typ Konvertierung nach Currency mit negativen Werten ist defekt

Beitrag von aladin » Fr 20. Sep 2019, 17:52

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten