Nachkommastellen anzeigen
-
- Beiträge: 20
- Registriert: Sa 15. Feb 2025, 13:33
Nachkommastellen anzeigen
Habe eine kleine Datenbank erstellt (mariadb, zeos V8).
artnr INT
bezeichnung VCHAR (20)
vkpreis Decimal(8,4)
01,"Arikel 1"; "10,68"
02,"Arikel 2"; "3,16"
Berechnet werden soll der neue Verkaufspreis: vkpreis=vkpreis*1,045
Im ZQuery ist unter SQL folgendes eingetragen:
SELECT artnr, bezeichnung,
vkpreis AS preis_alt,
ROUND(vkpreis * 1.045,2) AS preis_neu
FROM wawi.artikel;
Angezeigt wird im DBGrid unter
artnr preis_alt preis_neu
Arikel 1 10,68 11,16
Arikel 2 3,16 3,3
Ich möchte aber das für Artikel 2 der Preis 3,30 angezeigt wird.
Im DBGrid kann ich nichts einstellen.
artnr INT
bezeichnung VCHAR (20)
vkpreis Decimal(8,4)
01,"Arikel 1"; "10,68"
02,"Arikel 2"; "3,16"
Berechnet werden soll der neue Verkaufspreis: vkpreis=vkpreis*1,045
Im ZQuery ist unter SQL folgendes eingetragen:
SELECT artnr, bezeichnung,
vkpreis AS preis_alt,
ROUND(vkpreis * 1.045,2) AS preis_neu
FROM wawi.artikel;
Angezeigt wird im DBGrid unter
artnr preis_alt preis_neu
Arikel 1 10,68 11,16
Arikel 2 3,16 3,3
Ich möchte aber das für Artikel 2 der Preis 3,30 angezeigt wird.
Im DBGrid kann ich nichts einstellen.
Re: Nachkommastellen anzeigen
Bin kein Spezialist, aber ich denke doch, dass du das kannst.
Du musst nur Columns hinzufügen, dann kannst du dort "DisplayFormat" angeben pro Spalte.
https://lazarus-ccr.sourceforge.io/docs ... ormat.html
https://www.freepascal.org/docs-html/rt ... ormat.html
-
- Beiträge: 20
- Registriert: Sa 15. Feb 2025, 13:33
Re: Nachkommastellen anzeigen
Danke das schon mal recht hilfreich.
Leider klappt das nicht, wenn ich die Spalten über die SQL-Anweisung auswähle. In diesem Modus steht kein "DisplayFormat" zur Auswahl.
Manuell die Spalten auswählen klappt die Formatierung "0.00" eingeben ohne Gänsefüßchen.
Leider klappt das nicht, wenn ich die Spalten über die SQL-Anweisung auswähle. In diesem Modus steht kein "DisplayFormat" zur Auswahl.
Manuell die Spalten auswählen klappt die Formatierung "0.00" eingeben ohne Gänsefüßchen.
- Bullykiffer
- Beiträge: 17
- Registriert: Fr 9. Aug 2024, 19:44
- OS, Lazarus, FPC: Windows 10 (L 3.4.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
- Wohnort: Nordvorpommern
Re: Nachkommastellen anzeigen
Moin. Ich bin jetzt nicht der Experte,ich arbeite auch mehr oder weniger schlecht mit SQLite und PostgreSQL,aber vielleicht ist dies hier für Dich eine alternative:
FORMAT(vkpreis * 1.045, 2) AS preis_neu
Der Nachteil in dieser jetzigen Form wäre,das es eine Stringausgabe wäre. Wenn es nur ein Wert ist,der irgendwo "nur" angezeigt werden soll,
dann ist das vermutlich kein Problem,wenn der Wert noch für weitere Berechnungen genutzt werden soll,dann müsste man dort etwas dran machen.
Wie gesagt,ich nutze kein MariaDB,aber probier doch einfach mal aus ob es so funktioniert
Cya Bully
FORMAT(vkpreis * 1.045, 2) AS preis_neu
Der Nachteil in dieser jetzigen Form wäre,das es eine Stringausgabe wäre. Wenn es nur ein Wert ist,der irgendwo "nur" angezeigt werden soll,
dann ist das vermutlich kein Problem,wenn der Wert noch für weitere Berechnungen genutzt werden soll,dann müsste man dort etwas dran machen.
Wie gesagt,ich nutze kein MariaDB,aber probier doch einfach mal aus ob es so funktioniert

Cya Bully
-
- Beiträge: 20
- Registriert: Sa 15. Feb 2025, 13:33
Re: Nachkommastellen anzeigen
Danke für den Hinweis.
In der SQL-Anweisung steht:
SELECT artnr, bezeichnung,
vkpreis AS preis_alt,
ROUND(vkpreis * 1.045,2) AS preis_neu
FROM wawi.artikel;
Gerundet und auf 2 Nachkommastellen wird das ganze ja gemacht. Nur die Anzeige in der Tabelle klappt nicht, wenn die 2.Nachkommastelle eine 0 ist. Das sieht unschön aus.
Problem ist weiter, das bei einem Preis von 8,00 nur 8 angezeigt wird. Die Spalte ist als Decimal (8,4) definiert.
In der SQL-Anweisung steht:
SELECT artnr, bezeichnung,
vkpreis AS preis_alt,
ROUND(vkpreis * 1.045,2) AS preis_neu
FROM wawi.artikel;
Gerundet und auf 2 Nachkommastellen wird das ganze ja gemacht. Nur die Anzeige in der Tabelle klappt nicht, wenn die 2.Nachkommastelle eine 0 ist. Das sieht unschön aus.
Problem ist weiter, das bei einem Preis von 8,00 nur 8 angezeigt wird. Die Spalte ist als Decimal (8,4) definiert.
Re: Nachkommastellen anzeigen
Ich empfehle nicht, die Funktion „Format“ in der Abfrage zu verwenden, da dann Text anstelle von Zahlen angezeigt wird.
Verwenden Sie die Eigenschaft „DisplayFormat“, wie @theo schrieb
Verwenden Sie die Eigenschaft „DisplayFormat“, wie @theo schrieb
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
DataSource1.DataSet := ZQuery1;
DBGrid1.DataSource := DataSource1;
ZQuery1.SQL.Text := 'SELECT artnr, bezeichnung, vkpreis AS preis_alt, ROUND(vkpreis * 1.045,2) AS preis_neu FROM wawi.artikel';
ZQuery1.Open;
for i := 0 to DBGrid1.Columns.Count - 1 do
begin
if (DBGrid1.Columns[i].FieldName = 'preis_alt') or (DBGrid1.Columns[i].FieldName = 'preis_neu') then
DBGrid1.Columns[i].DisplayFormat := '0.00';
end;
end;
Grüße / Pozdrawiam
paweld
paweld
- Bullykiffer
- Beiträge: 17
- Registriert: Fr 9. Aug 2024, 19:44
- OS, Lazarus, FPC: Windows 10 (L 3.4.0 FPC 3.2.2)
- CPU-Target: Windows 64-Bit
- Wohnort: Nordvorpommern
Re: Nachkommastellen anzeigen
Hallo pawld
So geht es natürlich auch
Ich hab noch nie mit DBGrid gearbeitet,aber wenn ich mich jetzt auf z.B FORMAT() bei SQL abfragen beziehe,
dann kann es dort z.B. zu ganz bösen überraschungen kommen,wenn man die Formatausgabe mit '0.00' angibt. Ich weiß jetzt nicht wie DBGrid damit so umgeht,
bei der SQL Abfrage hat es mir damals die Zahlenstellen abgeschnitten,wenn der Wert z.B 22 oder 4444 gewesen wäre. Dann hätte die Abfrage eiskalt 2.00 oder 4.00
ausgegeben.Oder war es dann #.## ??? Ich weiß es nicht mehr. Aber das ist schon recht lange her,vielleicht hat sich in diese Richtung ja etwas geändert.
Bei PostgreSQL hab ich das dann mit FM99990.00 gelöst. Einstellige Werte (0) wurden immer angezeigt,auch wenn der wert z.B.: 0.05 war,und durch
die 9 war sichergestellt,das wenn ich größere Werte als einstellig habe,dann der Wert nicht unterschlagen wurde. Das verhinderte dann so Ausgaben wie
00000.05 -> 0.05
Cya de Bully
Code: Alles auswählen
for i := 0 to DBGrid1.Columns.Count - 1 do
begin
if (DBGrid1.Columns[i].FieldName = 'preis_alt') or (DBGrid1.Columns[i].FieldName = 'preis_neu') then
DBGrid1.Columns[i].DisplayFormat := '0.00';
end;

dann kann es dort z.B. zu ganz bösen überraschungen kommen,wenn man die Formatausgabe mit '0.00' angibt. Ich weiß jetzt nicht wie DBGrid damit so umgeht,
bei der SQL Abfrage hat es mir damals die Zahlenstellen abgeschnitten,wenn der Wert z.B 22 oder 4444 gewesen wäre. Dann hätte die Abfrage eiskalt 2.00 oder 4.00
ausgegeben.Oder war es dann #.## ??? Ich weiß es nicht mehr. Aber das ist schon recht lange her,vielleicht hat sich in diese Richtung ja etwas geändert.
Bei PostgreSQL hab ich das dann mit FM99990.00 gelöst. Einstellige Werte (0) wurden immer angezeigt,auch wenn der wert z.B.: 0.05 war,und durch
die 9 war sichergestellt,das wenn ich größere Werte als einstellig habe,dann der Wert nicht unterschlagen wurde. Das verhinderte dann so Ausgaben wie
00000.05 -> 0.05

Cya de Bully
Re: Nachkommastellen anzeigen
bei der Formatierung bedeutet eine ‚0‘, dass hier immer eine Ziffer stehen sollte, und ein ‚#‘ bedeutet, dass hier eine Ziffer stehen kann oder nicht, wenn es sich um eine endgültige oder anfängliche 0 handelt.
zum Beispiel:
zum Beispiel:
Code: Alles auswählen
Zahl | Format | Ergebnis
--------------------------------------
1,234 | 0.00 | 1,23
11,456 | 0.00 | 11,46
35 | 0.00 | 35,00
1,234 | 0.## | 1,23
11,456 | 0.## | 11,46
35 | 0.## | 35
12,1 | 000.00 | 012,10
12,1 | ##0.## | 12,1
Grüße / Pozdrawiam
paweld
paweld
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Nachkommastellen anzeigen
Wen ich so in der schnelle etwas formatieren will, mache ich es so:
Code: Alles auswählen
var
f: single = 123.456;
s: string;
begin
WriteStr(s, 'Es ist ', f: 6: 2, 'm gefahren.');
Caption := s;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 20
- Registriert: Sa 15. Feb 2025, 13:33
Re: Nachkommastellen anzeigen
Danke an alle.
Die Antworten waren sehr hilfreich.
Die Antworten waren sehr hilfreich.