🍀 Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! 🍀
❤️ Nur noch wenige Stunden, um das Ziel zu erreichen. Vielen lieben Dank! ❤️
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig ihr Wissen teilen.<<
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen Dank!
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Makro Mail Body ohne 0,00 Nachkomma
Makro Mail Body ohne 0,00 Nachkomma
Neujahrsgrüße an alle hier
Habe hier ein verflixtes Problem.
Bekomme bei der Multiplikation in einer Abfrage (Stck * Einzelpreis) zwar korrekte Werte, aber ohne Nullen als Nachkomma. Also anstatt 19,70 bekomme ich 19,7
Datentypen sind Stck als Integer und Einzelpreis als Decimal mit 4 Nachkommastellen.
Eine Änderung des Stck Datentyps auf Decimal brachte nichts
Innerhalb der Abfrage werden Stck und Einzelpreis korrekt mit Nachkomma-Nullen angezeigt, aber das Produkt der Multiplikation wie oben beschreiben ohne Nachlomma Nullen angezeigt.
Natürlich kann ich das in Berichten durch die Formatierung ändern.
EDIT: Habe jetzt gesehen, dass die normalen Einzelpreise (Datentyp Decimal 4 Nachkommastellen) jenseits der Multiplikation im Mail Body ebenfalls ohne 0,00 also als 0 angezeigt werden. Woran kann das liegen?
Fund aus dem Internet - würde das was bringen??
Sub FormatWaehrung()
Dim oForm As Object
Dim oField As Object
oForm = ThisComponent.DrawPage.Forms.getByName("MeinFormular") ' Formularname anpassen
oField = oForm.getByName("MeinFeld") ' Feldname anpassen
' Format-Code für Währung (z.B. mit 2 Dezimalstellen, Tausendertrenner)
oField.NumberFormat = 202 ' Standard-Formatnummer für Währung (kann variieren, besser benutzerdefinierten Code nutzen)
oField.NumberFormat = 3 ' Oft Standard für Währung, je nach System-Einstellungen
Ende des Beispiels, welches ich noch nicht implementiert habe
In meinem Makro Mailaufruf Body werden dann eben 19,7 Euro anstatt 19,70 Euro angezeigt.
Das finde ich unschön.
SQL Cast und round in SQL Abfrage brachten nichts.
Ich bin schon ganz verzweifelt. Wahrscheinlich ist es gar nicht so schwer oder ich mache einen dummen Fehler!
Wer weiß Rat?
Habe hier ein verflixtes Problem.
Bekomme bei der Multiplikation in einer Abfrage (Stck * Einzelpreis) zwar korrekte Werte, aber ohne Nullen als Nachkomma. Also anstatt 19,70 bekomme ich 19,7
Datentypen sind Stck als Integer und Einzelpreis als Decimal mit 4 Nachkommastellen.
Eine Änderung des Stck Datentyps auf Decimal brachte nichts
Innerhalb der Abfrage werden Stck und Einzelpreis korrekt mit Nachkomma-Nullen angezeigt, aber das Produkt der Multiplikation wie oben beschreiben ohne Nachlomma Nullen angezeigt.
Natürlich kann ich das in Berichten durch die Formatierung ändern.
EDIT: Habe jetzt gesehen, dass die normalen Einzelpreise (Datentyp Decimal 4 Nachkommastellen) jenseits der Multiplikation im Mail Body ebenfalls ohne 0,00 also als 0 angezeigt werden. Woran kann das liegen?
Fund aus dem Internet - würde das was bringen??
Sub FormatWaehrung()
Dim oForm As Object
Dim oField As Object
oForm = ThisComponent.DrawPage.Forms.getByName("MeinFormular") ' Formularname anpassen
oField = oForm.getByName("MeinFeld") ' Feldname anpassen
' Format-Code für Währung (z.B. mit 2 Dezimalstellen, Tausendertrenner)
oField.NumberFormat = 202 ' Standard-Formatnummer für Währung (kann variieren, besser benutzerdefinierten Code nutzen)
oField.NumberFormat = 3 ' Oft Standard für Währung, je nach System-Einstellungen
Ende des Beispiels, welches ich noch nicht implementiert habe
In meinem Makro Mailaufruf Body werden dann eben 19,7 Euro anstatt 19,70 Euro angezeigt.
Das finde ich unschön.
SQL Cast und round in SQL Abfrage brachten nichts.
Ich bin schon ganz verzweifelt. Wahrscheinlich ist es gar nicht so schwer oder ich mache einen dummen Fehler!
Wer weiß Rat?
Re: Makro Mail Body ohne 0,00 Nachkomma
Du musst die Dezimalzahl in einen String umwandeln.
Hier eine Variante:
Der Wert, den Du vorher hast, ist ein Double-Wert. Da ist in Basic der Dezimaltrenner ein Punkt.
Über das Format-Kommando wird der Wert in einen String umgewandelt, der mit zwei Dezimalstellen dargestellt wird.
In dem String wird dann der Punkt durch ein Komma ersetzt.
Bei der Weiterleitung an ein Mailprogramm kann es auch sein, dass Du genauso mit einem Punkt als Dezimaltrenner arbeiten kannst. Das sieht bei mir zum Mailversand so aus:
Hier eine Variante:
Code: Alles auswählen
stCurrency = Format(doValue, "###0.00")
stCurrency = Join(Split(stCurrency,"."),",")
Über das Format-Kommando wird der Wert in einen String umgewandelt, der mit zwei Dezimalstellen dargestellt wird.
In dem String wird dann der Punkt durch ein Komma ersetzt.
Bei der Weiterleitung an ein Mailprogramm kann es auch sein, dass Du genauso mit einem Punkt als Dezimaltrenner arbeiten kannst. Das sieht bei mir zum Mailversand so aus:
Code: Alles auswählen
stSumPayable = Format(oForm.getDouble(oForm.FindColumn("Brutto")), "#,##0.00 €")https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Makro Mail Body ohne 0,00 Nachkomma
Vielen Dank Robert!
Das ist ein Lichtblick!
Du schreibst: Zitat:
Der Wert, den Du vorher hast, ist ein Double-Wert
Zitat Ende
In der zugrunde liegenden Tabelle ist Brutto als Decimal definiert
Soll ich das ändern? Es existieren schon echte Einträge.
Wenn ich nun den Decimal-Wert "Brutto" im Makro habe - wie mache ich das konkret?
Ich muss doch zuvor stCurrency als String definieren, oder?
Wo kommt mein "Brutto" Wert in diesen Code?
Soll ich Brutto zuvor in einen String umwandeln - wie mache ich das?
stCurrency = Format(doValue, "###0.00")
stCurrency = Join(Split(stCurrency,"."),",")
Ich danke dir für die wertvollen Auskünfte
Michael
Das ist ein Lichtblick!
Du schreibst: Zitat:
Der Wert, den Du vorher hast, ist ein Double-Wert
Zitat Ende
In der zugrunde liegenden Tabelle ist Brutto als Decimal definiert
Soll ich das ändern? Es existieren schon echte Einträge.
Wenn ich nun den Decimal-Wert "Brutto" im Makro habe - wie mache ich das konkret?
Ich muss doch zuvor stCurrency als String definieren, oder?
Wo kommt mein "Brutto" Wert in diesen Code?
Soll ich Brutto zuvor in einen String umwandeln - wie mache ich das?
stCurrency = Format(doValue, "###0.00")
stCurrency = Join(Split(stCurrency,"."),",")
Ich danke dir für die wertvollen Auskünfte
Michael
Re: Makro Mail Body ohne 0,00 Nachkomma
In der Datenbank hast Du einen Dezimalzahl gespeichert. Das ist das übliche Verfahren für Währungen.
In Basic liest Du das als DOUBLE aus. Ist vom Prinzip her das Gleiche.
Du hast bei beiden Verfahren eine Dezimalzahl mit so vielen Nachkommastellen, wie dort tatsächlich vorkommen. Die Nullen werden abgeschnitten.
In dem, was ich geschrieben habe, ist doValue der Wert Deines "Brutto". Ich weiss ja nicht, wie Du da dran kommst. Da dürfte dann vielleicht das 2. Beispiel passend sein: Basis des Formulars ist eine Ansicht, in der das Feld "Brutto" existiert. Aus dem wird der Wert ausgelesen und entsprechend mit dem Befehl Format formatiert. Das, was dabei raus kommt, ist ein String. Den kannst Du auch am Anfang definieren:
DIM stCurrency AS STRING
oder
DIM stSumPayable AS STRING
In Basic liest Du das als DOUBLE aus. Ist vom Prinzip her das Gleiche.
Du hast bei beiden Verfahren eine Dezimalzahl mit so vielen Nachkommastellen, wie dort tatsächlich vorkommen. Die Nullen werden abgeschnitten.
In dem, was ich geschrieben habe, ist doValue der Wert Deines "Brutto". Ich weiss ja nicht, wie Du da dran kommst. Da dürfte dann vielleicht das 2. Beispiel passend sein: Basis des Formulars ist eine Ansicht, in der das Feld "Brutto" existiert. Aus dem wird der Wert ausgelesen und entsprechend mit dem Befehl Format formatiert. Das, was dabei raus kommt, ist ein String. Den kannst Du auch am Anfang definieren:
DIM stCurrency AS STRING
oder
DIM stSumPayable AS STRING
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Makro Mail Body ohne 0,00 Nachkomma
1000 Dank Robert!
Hatte einen Denkfehler, aber jetzt verstehe ich das.
Basic liest also aus der Multiplikation von Integer und Decimal ein Double aus.
Und es schneidet die Nullen ab.
Jetzt hab ich's begriffen
Ich werde das jetzt implementieren.
Vielen Dank für deine hilfreichen Antworten!!
Michael
Hatte einen Denkfehler, aber jetzt verstehe ich das.
Basic liest also aus der Multiplikation von Integer und Decimal ein Double aus.
Und es schneidet die Nullen ab.
Jetzt hab ich's begriffen
Ich werde das jetzt implementieren.
Vielen Dank für deine hilfreichen Antworten!!
Michael
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.