![]() |
Ausgabe von Money-Werten in DBGrid
Hallo Allerseits,
ich habe da folgendes Problem: Ich habe eine Datenbank-Tabelle (MSSQL) in der u.a. ein Money-Wert abgespeichert wird. Den Inhalt der Tabelle lasse ich auf ein DBGrid ausgeben. Soweit so gut. Das Problem ist, dass das Grid die Ausgabe der Money-Werte offensichtlich formatiert, denn aus "ganzen" Werten, wie z.B. 12.00 macht das Grid einfach "12", es läßt also die 2 Nachkommastellen einfach weg. Das sieht nicht nur unschön aus ist obendrein auch noch verwirrend. Ein Versuch, das ganze in varchar zu konvertieren hat zwar geklappt, aber dann wird die Spalte auf einmal linksbündig ausgegeben, was wiederum unschön ist.(Das Konvertieren erfolgte in MSSQL mittels convert...) Daher meine Frage(n): Weiß jemand, wie ich das Grid überreden kann, bei Money -Werten die Nachkommastellen "00" mit auszugeben? ODER Weiß jemand, wie ich das automatische Ändern der Bündigkeit beim Umwandeln in varchar abschalten kann? Für jeden Tipp dankbar grüßt Murphy |
Re: Ausgabe von Money-Werten in DBGrid
Du könntest im OnDrawColumnCell das Zeichnen selbst übernehmen.
|
Re: Ausgabe von Money-Werten in DBGrid
Hey,
folgenden Ansatz haben wir verfolgt: 1.) Schleife über alle Felder des Grids 2.) CASE-Anweisung für alle Datatypes:
Delphi-Quellcode:
3.) pro DataType das gewünschte DisplayFormat setzen
case aTable.Fields[i].DataType of
Delphi-Quellcode:
TCurrencyField(aTable.Fields[i]).DisplayFormat:=
nochmals als Codesnippet:
Delphi-Quellcode:
Hoffe, das hilft dir weiter.
for i := 0 to aTable.FieldCount -1 do
begin case aTable.Fields[i].DataType of ... ftCurrency:TCurrencyField(aTable.Fields[i]).DisplayFormat := ... ... end; end; gruß, Helld |
Re: Ausgabe von Money-Werten in DBGrid
Besten Dank Helld ! Die Antwort klappte wunderbar!
Bem.: Ich weiß nicht, ob es daran liegt, dass ich eine ADOQuery und keine TTAble verwende, aber die Spalte vom Typ MONEY bekommt im DBGrid (bzw. in der ADOQuery) den Datentyp ftBCD und nicht den erwarteten ftCurrency. Warum das so ist, weiß ich leider nicht, aber als ich das dann endlich herausbekommen habe, funktioniert die Formatierung:
Delphi-Quellcode:
Also nochmal besten Dank für die schnelle Antwort!
ftBCD:TCurrencyField(query.Fields[i]).DisplayFormat :='#,0.00;-#,0.00';
Murphy |
Re: Ausgabe von Money-Werten in DBGrid
Hi,
hmm, mit ADO hab ich selbst noch nicht gearbeitet, aber die Delphihilfe sollte ja hierzu auch eine Auflistung aller Typen haben ;) Freut mich, geholfen zu haben... Gruß, Helld |
Re: Ausgabe von Money-Werten in DBGrid
Hallo zusammen,
ihr habt jetzt die Formatierung über den Quellcode vorgenommen. Aber gibt es keine Möglichkeit, diese direkt im SQL festzulegen? Mit
SQL-Code:
oder
Select cast(preis as money), ...
SQL-Code:
wird die Anzeige wenigstens gezwungen unendlichen Nachkommastellen auf 4 zu reduzieren. Blöderweise werden aber 0 unterdrückt, so dass z.B. 12,1000 als 12,1 angezeigt wird. Ich möchte aber alle mit 2 und wenn sein muss auch mit 4 Nachkommastellen. Ich denke die 4 Stellen sind eine Einstellung in der DB.
Select convert(money, preis), ...
Ich arbeite mit ADO und MsSQL Gerd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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