Entwickler-Ecke

Datenbanken - Ausgabe von SQL Abfrage formatieren


hube - Mi 08.09.10 15:29
Titel: Ausgabe von SQL Abfrage formatieren
Hallo zusammen

Ich habe folgendes Problem: Ich lese auf zwei verschiedene Arten Daten aus der selben Tabelle heraus und möchte bei beiden Ergebnissen das Resultat (Preis oder Umsatz) mit 2 Kommastellen formatiert haben. Es handelt sich um eine Paradox Tabelle und Delphi7.

Hier sind die Abfragen mit welchen ich die Daten auslese:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add ('Select *');
Query1.SQL.Add ('FROM Lager');
Query1.SQL.Add ('WHERE status = ''verkauft''');
Query1.SQL.Add (' and ABGERECHNET_BETRAG = 0');
Query1.SQL.Add (' and verkauft_datum <=' +QuotedStr(Label2.Caption));
Query1.Open;

DBGrid1.Visible := True;
Label1.Caption := IntToStr(Query1.RecordCount) + ' rows';
Label1.Visible := True;
Button3.Visible := True;
Button4.Visible := True;
Button4Click(Sender);
end;


Bei dieser Abfrage möchte ich, dass es im DBGrid die Spalte "Preis" mit 2 Kommastellen anzeigt. Das sollte doch mit Format(Preis,'0.00') funktionieren, aber ich bringe das nicht hin.

und


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.ComboBox1Click(Sender: TObject);
var
start : string;
ende : string;
begin
start := '"01.01.' + Combobox1.Text +'"'// in Combobox1.Text wird das gewünschte Jahr (z.B. 2009) ausgewählt
ende := '"31.12.' + ComboBox1.Text +'"';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add ('SELECT Kundennummer, SUM(preis) AS Umsatz FROM "lager.db"');
Query1.SQL.Add ('WHERE (status = "verkauft")');
Query1.SQL.Add ('AND (verkauft_datum <= '+ende+')');
Query1.SQL.Add ('AND (Kundennummer BETWEEN 1001 AND 1999)');
Query1.SQL.Add ('AND (verkauft_datum >= '+start+')');
Query1.SQL.Add ('GROUP BY Kundennummer');
Query1.SQL.Add ('order by Umsatz desc');
Query1.Open;
Label1.Caption := IntToStr(Query1.RecordCount) + ' rows';
Button4Click(Sender);
end;


Auch hier sollte es doch mit Format(Preis,'0.00') funktionieren.

Ich stehe da irgendwie auf dem Schlauch ...

Besten Dank für jede Hilfe.

hube

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am Mi 08.09.2010 um 17:13


zuma - Mi 08.09.10 16:38

Hallo,
die Formatierung deines Ergebnisses sollte bei der Darstellung, nicht bei der Abfrage vorgenommen werden.
Dazu solltest du dir mal die Eigenschaft Displayformat anschauen ;)


hube - Mi 08.09.10 16:45

Das habe ich mir auch schon überlegt, nur ist die angezeigte Spalte bei dem selben DBGrid nicht immer die Selbe die dann 2 Kommastellen haben sollte.

Es muss doch eine Möglichkeit geben, die Ausgabe einer SQL Abfrage direkt zu formatieren, sonst gäbe es ja den Befehl "Format" nicht.

Aber Danke trotzdem.

hube


Tankard - Mi 08.09.10 18:07

SELECT Kundennummer, Format(SUM(preis),2) AS Umsatz FROM "lager.db"


sollte gehen.


gruss
Tankard


alzaimar - Mi 08.09.10 19:25

Wie wäre es, das Feld der Query zu formatieren?

Delphi-Quelltext
1:
Query.FieldByName('Preis').DisplayFormat := '#0,0.00';                    

Ungetestet.