AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabe von Money-Werten in DBGrid

Ein Thema von texmurphy901 · begonnen am 17. Apr 2008 · letzter Beitrag vom 22. Apr 2008
Antwort Antwort
texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#1

Ausgabe von Money-Werten in DBGrid

  Alt 17. Apr 2008, 11:57
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Ausgabe von Money-Werten in DBGrid

  Alt 17. Apr 2008, 12:04
Du könntest im OnDrawColumnCell das Zeichnen selbst übernehmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Ausgabe von Money-Werten in DBGrid

  Alt 17. Apr 2008, 12:09
Hey,

folgenden Ansatz haben wir verfolgt:
1.) Schleife über alle Felder des Grids
2.) CASE-Anweisung für alle Datatypes:
case aTable.Fields[i].DataType of 3.) pro DataType das gewünschte DisplayFormat setzen
TCurrencyField(aTable.Fields[i]).DisplayFormat:=
nochmals als Codesnippet:
Delphi-Quellcode:
for i := 0 to aTable.FieldCount -1 do
begin
  case aTable.Fields[i].DataType of
        ...
        ftCurrency:TCurrencyField(aTable.Fields[i]).DisplayFormat := ...
        ...
  end;
end;
Hoffe, das hilft dir weiter.

gruß, Helld
  Mit Zitat antworten Zitat
texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#4

Re: Ausgabe von Money-Werten in DBGrid

  Alt 17. Apr 2008, 13:23
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:
       ftBCD:TCurrencyField(query.Fields[i]).DisplayFormat :='#,0.00;-#,0.00'; Also nochmal besten Dank für die schnelle Antwort!
Murphy
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Ausgabe von Money-Werten in DBGrid

  Alt 17. Apr 2008, 13:44
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
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#6

Re: Ausgabe von Money-Werten in DBGrid

  Alt 22. Apr 2008, 11:40
Hallo zusammen,

ihr habt jetzt die Formatierung über den Quellcode vorgenommen. Aber gibt es keine Möglichkeit, diese direkt im SQL festzulegen? Mit
Select cast(preis as money), ... oder
Select convert(money, preis), ... 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.

Ich arbeite mit ADO und MsSQL

Gerd
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz