DBGrid zeigt falsche Zahlen an

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

DBGrid zeigt falsche Zahlen an

Beitragvon TT73GP7 » 11. Jan 2017, 16:51 DBGrid zeigt falsche Zahlen an

Hallo zusammen,

ich habe gestern die neue Lazarus Version installiert.
Soweit alles super und läuft auch echt schön schnuffig.

Nur leider gibt Zeigt ein DBGrid falsche Zahlen an :(

z.B.
2059,72 wird zu 79999999989558
bei Zahlen die keine Kommastelle haben geht alles gut

Wenn ich nun das SQL nehme und in der Datenbank direkt ausführe, zeigt er alles richtig an.

hmm
da dachte ich mir gut nutze ich halt Displayformat (#####,##)

joar eigentlich super,
nur zeigt er aber keine nach Kommastellen mehr an

hmm wie bekomme ich denn diesen Fehler raus?

Viele Grüße
:)
TT73GP7
 
Beiträge: 228
Registriert: 29. Mär 2016, 19:45

Beitragvon wp_xyz » 11. Jan 2017, 19:28 Re: DBGrid zeigt falsche Zahlen an

Wenn das DisplayFormat hier denselben Regeln folgt wie bei FormatFloat, dann ist auf jeden Fall der Dezimaltrenner falsch - das ist im FormatString immer ein Punkt, selbst wenn die Ländereinstellungen ein Komma wollen. Selbst wenn du das behoben hast, wird das immer noch nicht zur Zufriedenheit ausfallen: Das '#' steht für eine Ziffer, die entfällt, wenn sie 0 ist. Das heißt: die Zahl 0 wird als LeerString formatiert. Daher meine ich, dass der richtige FormatString ein '0' direkt for dem Dezimalpunkt enthalten sollte - denn diese Ziffer wird ausgegeben, auch wenn sie 0 ist - und wenn du zwei Dezimalstellen fest haben willst, auch zweimal 0 nach dem Dezimalpunkt, also '0.00'. Wenn die Zahl >= 10 ist, werden die zugehörigen Ziffern trotzdem ausgegeben, auch wenn hier kein Formatzeichen mehr steht.

Code: Alles auswählen
program Project1;
 
uses
  SysUtils;
begin
  WriteLn(FormatFloat('######,##', 2059.72));   // --> '2060'
  WriteLn(FormatFloat('######.##', 2059.72));   // --> '2059.72'
  WriteLn(FormatFloat('0.00', 2059.72));        // --> '2059.72'
 
  WriteLn(FormatFloat('######,##', 0));         // --> ''
  WriteLn(FormatFloat('######.##', 0));         // --> ''
  WriteLn(FormatFloat('0.00', 0));              // --> '0.00'
 
  WriteLn(FormatFloat('######,##', 0.0001));    // --> ''
  WriteLn(FormatFloat('######.##', 0.0001));    // --> ''
  WriteLn(FormatFloat('0.00', 0.0001));         // --> '0.00'
 
  ReadLn;
end
wp_xyz
 
Beiträge: 2837
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

porpoises-institution
accuracy-worried