![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IbDac
Formatierung im View
Moin SQL-Spezialisten,
um ein sehr umfangreiches View in einer Firebird-DB etwas übersichtlicher zu gestalten, habe ich mehrere Spalten mit Concat zusammengefaßt:
Code:
Hat mich zwar einiges an Schweiß und Herumprobieren gekostet, aber es funktioniert jetzt. Dabei ergibt sich jedoch ein Darstellungsproblem: Bei ZIEHUNGEN.Q1 - Q9 handelt es sich um Geldbeträge, also Numeric (15,2). Da diese Beträge teilweise in die Millionen gehen, vermisse ich das Tausender-Trennzeichen (wie heißt der Fachbegriff nochmal?).
...
AS SELECT ... A1.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G1,3,'0') ||' = '|| lpad(ZIEHUNGEN.Q1,11,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A2.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G2,4,'0') ||' = '|| lpad(ZIEHUNGEN.Q2,10,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A3.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G3,5,'0') ||' = '|| lpad(ZIEHUNGEN.Q3,09,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A4.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G4,6,'0') ||' = '|| lpad(ZIEHUNGEN.Q4, 7,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A5.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G5,6,'0') ||' = '|| lpad(ZIEHUNGEN.Q5, 6,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A6.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G6,6,'0') ||' = '|| lpad(ZIEHUNGEN.Q6, 5,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A7.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G7,7,'0') ||' = '|| lpad(ZIEHUNGEN.Q7, 5,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A8.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G8,7,'0') ||' = '|| lpad(ZIEHUNGEN.Q8, 5,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', A9.QUOTENTEXT ||': '|| lpad(ZIEHUNGEN.G9,7,'0') ||' = '|| lpad(ZIEHUNGEN.Q9, 4,'0') ||' '|| WAEHRUNG.WAEHRUNG || ' ', ... Gibt es eine Möglichkeit, einen Numeric-Wert so in einen String zu casten, daß der String das Tausender-Trennzeichen enthält? |
AW: Formatierung im View
Zitat:
|
AW: Formatierung im View
Warum verwendest du kein Calculated Field um die Daten aus mehreren Feldern zusammenzuziehen.
Damit hat man wesentlich mehr Kontrolle über den Feldinhalt da Delphi hier einfach mächtiger ist als SQL. Dann kannst du deine mühsam zusammengestellte SQL-Formatierung natürlich wieder wegwerfen aber besser ist das. Das Leerzeichen hinter WAEHRUNG erscheint mir auch überflüssig. |
AW: Formatierung im View
Zitat:
Zitat:
Zitat:
War aber doch irgendwie eine blöde Idee, ich hatte gerade stundenlang die Firebird-Dokumentation durchstöbert, um meine SQL-Kenntnisse zu erweitern, und kam dabei drauf, daß ich das ja nun mal probieren könne ... Außerdem soll der Anwender ja – was mir erst später aufgefallen ist – auch die Spalten nach den Beträgen sortieren können. So geht das auf jeden Fall mal nicht. Zitat:
Ich danke euch beiden für das offenbar dringend notwendige Zurechtrücken meins Blickwinkels :cyclops: |
AW: Formatierung im View
Auch wenn Du bereits Asche auf Dein Haupt gestreut hast:
Ich bin mir nicht sicher, dass das pauschal in den Client gehört. Am ehesten noch, wenn es sich um eine Anwendung mit lokaler/embedded DB handelt. Und natürlich, wenn die DB keine Formatierungsfunktion mit Thousand Separator bietet. Eine zentrale DB, die formatierte Reporting Views liefert, finde ich vollkommen ok. Auf die Schnelle habe ich sowas gefunden: ![]() und das hier, kann es aber nicht richtig einsortieren, hab grad keine FB am Start. ![]() Sortierung ist natürlich noch mal ein gesondertes Problem, kann man aber auch in einer unkonvertierten Spalte durchführen. |
AW: Formatierung im View
Es ist eine philosophische Frage, ob die View formatierte Daten oder rohe Daten liefern soll.
Allerdings ist die Hauptaufgabe einer DB Daten zu speichern und wieder hervorzukramen, und ein Formular, Report, etc. hat als Hauptaufgabe Daten anzuzeigen (oder auch entgegenzunehmen). Vor diesem Hintergrund gibt es ja auch noch die unterschiedliche Schreibweise von Währungsbeträgen (Währung vor oder nach dem Betrag) $1000,00 vs. 1000,00€ Wieviele Views oder spezielle Funktionen will man denn schreiben? Das Betriebssystem weiß (sollte wissen) wie man die Währung darstellt, der DB/Tabelle/View kann es egal sein, und relevant wird es eh erst bei der Ausgabe an den User. |
AW: Formatierung im View
Zitat:
Zitat:
It uses default formatting: dot as decimal point, no thousand separator, dates in ISO-8601 format. Just make sure that size of VARCHAR field is large enough to hold the longest string representation of the datatype you are converting. Zitat:
Zitat:
Ich hab's aber jetzt soweit begriffen, daß ich mein View wieder herstelle, wie's am Anfang war: ohne Zusammenziehen von Spalten. Das scheint mir am sinnvollsten. |
AW: Formatierung im View
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Formatierung im View
Zitat:
Als Ausnahme würde ich z.B. gelten lassen dass eine Filial- und eine Kundennummer zu einem Feld zusammengezogen werden weil diese Kombination im Geschäftsprozess überall verwendet wird. Andererseits kann und soll eine View ruhig auch die Daten vorverarbeiten insbesondere meine ich damit die Aggregatfunktionen SUM, COUNT, AVG, MIN und MAX. |
AW: Formatierung im View
Um welche Währung es sich handelt gehört ja auch zu den Daten (sonst köntte es sich ja auch um Hasenköttel handeln).
Diese Information speichere ich als ISO-Code in der DB, aber die Formatierung für die Ausgabe ist nicht die Aufgabe der View/DB |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz