![]() |
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
dbgrid , varchar Werte runden
in meiner Datenbank gibt es zwei Felder für image_x, image_y, diese beiden Felder beinhalten Floating Point Werte.
Delphi-Quellcode:
CREATE TABLE [tablename](
.... [image_x] [varchar](255) NULL, [image_y] [varchar](255) NULL, ) Mit
Delphi-Quellcode:
Select * from mytable where ....
kann ich Werte aus der DB abfragen und in einem DB Grid zur Anzeige bringen. Funktioniert alles wie gewünscht. (VCL Framework) Frage: Wie kann ich jetzt gerundete Zahlenwerte im DB Grid darstellen? Ich würde nur ungern die Rohdaten in der Datenbank runden, dh. den String verkürzen.... Für die Spaltenbreite habe ich bereits eine Lösung :
Delphi-Quellcode:
IniFile := TIniFile.Create(IniFileName); try for I := 0 to Grid.Columns.Count - 1 do begin IniFile.WriteInteger('DBGridSettings', Grid.Columns[I].FieldName, Grid.Columns[I].Width); end; finally IniFile.Free; end;
Delphi-Quellcode:
IniFile := TIniFile.Create(IniFileName); try for I := 0 to Grid.Columns.Count - 1 do begin Grid.Columns[I].Width := IniFile.ReadInteger('DBGridSettings', Grid.Columns[I].FieldName, Grid.Columns[I].Width); end; finally IniFile.Free; end; |
AW: dbgrid , varchar Werte runden
Etwas in dieser Art?
Delphi-Quellcode:
Da du die Felder aber als varchar definiert hast, könntest du bei ungültigen Inhalten Probleme bekommen.
(MeineQuery.FieldByName('image_x') as TFloatField).DisplayFormat := '###,##0.00'
|
AW: dbgrid , varchar Werte runden
Die erste Frage ist natürlich, wieso Du floating point Zahlen in VARCHAR-Feldern ablegst und nicht in NUMBER oder anderen für solche Daten vorgesehenen Feldtypen.
Ansonsten sieh Dir mal den OnDrawDataCell event des grids an, da kannst Du den Feldinhalt anzeigen wie Du willst. |
AW: dbgrid , varchar Werte runden
Das komische Delphi-StringGrid kennt nur ein OnGetEditText,
aber am DataSet, bzw. am TField, gibt es ein OnGetText und dort kann man Display und EditText entsprechend formatieren, wie man will. |
AW: dbgrid , varchar Werte runden
Du könntest auch den DB-Server Deine Varchar-Werte in Float-Werte umwandeln lassen (über das SELECT-Statement); sowas in der Art:
Code:
Das geht dann natürlich auch zusätzliche / gleichzeitig mit den nicht umgewandelten Werten.
SELECT CONVERT( DECIMAL(18, 5), [image_x] ) AS [numImage_x], [image_x], ...
Das Runden könnte die Datenbank dann auch gleich mit übernehmen (SQL-Funktion ROUND)... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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