By Lars Mäurer on 4. Mai 2023
Beginner

Es ist möglich, mit SQL-Funktionen die Einträge für einen Bericht auch direkt zu formatieren!


Hier geht es eigentlich vordergründig um das Datums-Format und Währungs-Format, die Lösungen sind aber grundsätzlich auch auf andere Daten anwendbar, die formatiert werden sollen.


Hier also das BEISPIEL Nr. 1:


So würde man normalerweise in der SQL-Abfrage das Transaktions-Datum ermitteln und die Spalte "Datum" nennen:


SELECT

`tabPayment Request`.transaction_date AS "Datum",

FROM

`tabPayment Request`


Das Datum wird dann in einem Standard-Format ausgegeben (bei uns hier war es: 2023/12/24) - nicht so schön.


Lösungs-Variante 1:

`tabPayment Request`.transaction_date AS "Datum:Date",


...verwendet also das Date-Format (auch das wird in verschiedenen ERPNExt's sicher verschiedenen aussehen (bei uns hier war es: 24-12-2023, immerhin))


Diese Lösungs-Variante funktioniert auch, um z.B. Währungsangaben so zu formatieren, wie es Standard im System ist, Beispiel:


`tabPayment Request`.grand_total AS "Betrag:Currency",


...verwendet dann also das Currency-Format aus dem System, in unserem Fall "€ x.xxx,xx" (Deutsches Komma!)


Man schreibt also einfach hinter den Doppelpunkt den gewünschten Format-Typ und erhält zumindest eine Formatierung, die erstmal halbwegs funktioniert.



Lösungs-Variante 2 (Supervariante):


SELECT

  CONCAT(DAY(`tabPayment Request`.transaction_date),'.',MONTH(`tabPayment Request`.transaction_date),'.',YEAR(`tabPayment Request`.transaction_date)) AS "Datum",

FROM

  `tabPayment Request`


Jetzt kann man direkt SQL-Funktionen verwenden, hier im Beispiel:

DAY(); MONTH(); YEAR() - ermittelt den Tag/Monat/Jahr einer Datumsangabe

CONCAT() verknüpft diese 3 Werte dann (mit Punkten dazwischen) zu einem typisch deutschen Datum. Hier sind natürlich kaum Beschränkungen mehr vorhanden, wie man das formatieren will -> Alle Freiheiten. :-)


Lösungsvariante 3 (Schnellvariante):


SELECT

TO_CHAR(`tabPayment Request`.transaction_date, 'DD.MM.YYYY') AS "Datum",

FROM

`tabPayment Request`


Das ist sozusagen die Schnell-Variante, die meist ausreichen sollte. Dies wandelt die Daten in Text um ("TO_CHAR") und formatiert sie in der gewünschten Weise.




Hier also das BEISPIEL Nr. 2:


In diesem Beispiel geht es um eine spezielle Währungsformatierung:

Es soll die korrekte (deutsche) Währungsformatierung erreicht werden, allerdings ohne "€"-Zeichen!


Mit "€"-Zeichen wäre das sehr einfach; siehe oben.


Ohne "€"-Zeichen:

FORMAT(`tabPayment Request`.grand_total, 2, 'de_DE') AS "Betrag",


FORMAT formatiert das Ergebnis der Anfrage, die 2 gibt die Anzahl der Nachkommastellen an (Bei Währung natürlich: 2), und das 'de_DE' kümmert sich um die deutsche Formatierung der Zahl, das bedeutet: Punkte zwischen den 3er-Gruppen.

Beispiel Ergebnis: 123.345,60



Wenn einer eine schönere und/oder mächtigere Variante gefunden hat, gerne her mit den Infos!


Weitere Artikel zum Drucken (Printing)



Weitere Artikel zum Drucken (Printing)
Comments

No comments yet.

Einen Kommentar hinzufügen
"Strg + Enter" um Kommentar hinzuzufügen