![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: zeos
SQL-Abfrage formatiert ausgeben
Über eine Query - SQL-Abfrage ziehe ich mir Summen über meine Verkäufe und zeige diese über ein GRID an.
Das Formular beinhaltet unterschiedliche Abfragen, bei denen sich auch die Spalten ändern. Gerne würde ich die Spalten formatiert anzeigen, z.B. in Currency etc. z.B.
Code:
Wie kann ich nach Abfrage die gelesenen Spalten formatieren dass z.B. ?WITH zrdnlyqry_Verkauefe do begin Active := False ; SQL.Clear;SQL.Add( 'SELECT'); SQL.Add( ' A.ARTIKEL_NR,'); SQL.Add( ' sum( OA.ARTIKEL_PREIS_D ) AS Sum_Umsatz,'); SQL.Add( ' sum( OA.ARTIKEL_EK_PREIS ) AS Sum_EK,'); SQL.Add( ' sum( OA.ARTIKEL_MENGE ) AS Sum_Anzahl,'); SQL.Add( ' CAST(( 100 *( 1 - SUM( OA.ARTIKEL_EK_PREIS ) ) / IIF( SUM( OA.ARTIKEL_PREIS_D ) = 0 ,0.01 , SUM( OA.ARTIKEL_PREIS_D ) ) ) as decimal( 6 , 2 ) ) AS ProzWert'); SQL.Add( ' FROM') : : : ; SUM_Umsatz als Currency ausgegeben wird. Leider wird auch der CAST-Wert nicht in Decinmal( 6,2 ) ausgegeben einige Ergebnisse weisen nur eine Dezimalstelle andere gar keine aus. Wie beschrieben möchte ich die Query auf dem Formular dynamische nutzen um hier ein Standardformular mit unterschiedlichen Abfrage zu füttern. |
AW: SQL-Abfrage formatiert ausgeben
Hallo,
habe dann doch noch die Lösung gefunden. Vielleicht suchen ja auch Andere danach.
Code:
Dennoch verstehe ich nicht warum CAST keinen Dezimalwert ausgibt)
TNumericField(FieldByName('Sum_Umsatz')).DisplayFormat := '#0.00 €';
TNumericField(FieldByName('Sum_EK')).DisplayFormat := '#0.00 €'; TNumericField(FieldByName('ProzWert')).DisplayFormat := '#0.00 %'; |
AW: SQL-Abfrage formatiert ausgeben
Weil das Ergebnis Delphiseitig als Float aufgefasst wird.
|
AW: SQL-Abfrage formatiert ausgeben
Deine Query liefert Dezimalwerte (ob nun als decimal oder float ist egal). Dein Programm stellt diese Werte dar. Ohne explizite Angabe des Formats wird eine Zahl so genau wie nötig dargestellt. 7.00000 ist eine 7 und 1.230000000 eine 1.23 . Das ist auch vollkommen korrekt.
In einer Query bzw. mit den SQL-Datentypen 'Numeric' und 'Decimal' kannst Du die maximale Genauigkeit der internen Speicherung ('Auf 2 Nachkommastellen, 10 Stellen insgesamt') angeben, mit der *Darstellung* hat das nichts zu tun (Du kannst eine Decimal(10,2)-Zahl auch mit 3 Nachkommastellen ausgeben. Dann ist die letzte Nachkommastelle immer eine 0, aber es geht. Erst mit einer Formatanweisung kannst du fixe Vor- oder Nachkommastellen angeben (wenn Du das möchtest). Ich bevorzuge auch die Tausendertrennzeichen, weswegen mein bevorzugtes Format '#,0.00' ist. |
AW: SQL-Abfrage formatiert ausgeben
Zitat:
Code:
Leider hat man glaub ich keine Möglichkeit, das explizit mit einer Formatmaske zu versehen. Vielleicht findest Du dazu aber eine brauchbare UDF.
cast(22.5 as varchar(50))
|
AW: SQL-Abfrage formatiert ausgeben
Ich würde Formatierungen nicht in der Abfrage, sondern bei der Anzeige durchführen.
|
AW: SQL-Abfrage formatiert ausgeben
Ich würde es auch nur unter gewissen Umständen machen, so hab ich es ja auch geschrieben. Der TE kann es vielleicht selbst beurteilen, ob es für Ihn in Frage kommt. Ein Hindernis ist ja hier leider die "dünne" Ausstattung bei Firebird.
Warum würdesst Du es nicht machen? |
AW: SQL-Abfrage formatiert ausgeben
Zitat:
|
AW: SQL-Abfrage formatiert ausgeben
Tja, also ich kann ohne Probleme einen Preis oder eine Summe dynamisch per SQL ausgeben und meinetwegen auch eine Währung berücksichtigen, ähnlich geht es bei Datumsangaben, kommt halt auch auf die Fähigkeiten des DB Systems an, wie schon gesagt.
Die Vorgabe des TE war ja ein Formular für unterschiedliche SQL Statements zu verwenden. Jetzt kann er entweder eine Feldverwaltung mit Formatierung einbauen oder aber im einzigen Teil, der eh dynamisch ist, direkt für eine richtig formatierte Ausgabe sorgen. Natürlich gibt es Direktiven wie "weil nur die Anzeige für die Darstellung verantwortlich ist" nicht ohne Grund, aber die sind kein Selbstzweck. In einem überschaubaren Rahmen finde ich eine Lösung mit SQL Formatierung vollkommen okay. |
AW: SQL-Abfrage formatiert ausgeben
Zitat:
Gruß K-H |
AW: SQL-Abfrage formatiert ausgeben
Hallo,
Zitat:
|
AW: SQL-Abfrage formatiert ausgeben
Hab ich was von "Report" geschrieben?:shock:
es ist Word, und die Zicke von dem zu überzeugen was man gerne hätte ist doch recht aufwendig. Darum auch die Tricksereien mit der Abfrage und dem Ausgabeformat. Gruß K-H P.S. in absehbarer Zeit wir bei uns offizell auf ISO-Format umgestellt, dann stellt sich auch diese Frage nicht mehr! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 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 by Thomas Breitkreuz