![]() |
Datenbank: SQLite • Version: D10.4 • Zugriff über: FireDAC
DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Ich habe in einer SQLite Datenbank eine Tabelle mit einem DateTime Wert.
Diesen zeige ich in einem DBGrid an. Im GridInit habe ich explizit noch eingetragen:
Code:
Als Anzeige im Grid bekomme ich aber angezeigt "07.07.2022 00:00:00"
TDateTimeField(grdKasse.Columns[7].Field).DisplayFormat:= 'dd.mm.yyyy hh:nn:ss';
In der Tabelle sind unterschiedliche Zeiten enthalten. Nur das DBGrid zeigt es als 00:00:00 an. Definiert wurde die Tabelle mit:
Code:
Könnt ihr mir da einen Tip geben was ich falsch mache?
qKasse.SQL.Text := 'Create Table If Not Exists Kasse ' +
'(Nr INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,' + ' Name VARCHAR(100), EPreis Real, Menge Integer,Frei VARCHAR(1), ' + 'Rabatt VARCHAR(1), Summe Real,Datum datetime, Bemerkung VARCHAR(200))'; qKasse.ExecSQL; |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Hallo,
mal dd.mm.yy probiert? Zum Test, ob das DisplayFormat überhaupt funktioniert. |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Du schießt hier ein bisschen von hinten durch die Brust.
Das TDateTimeField gehört zum Dataset und hat eigentlich nichts mit dem Grid tun. So kann man es zwar auch machen; es ist jedoch sehr fehleranfällig. Sobald sich die Column-ID der Datumsspalte ändert, läuft das schon auf einen Fehler hinaus. Beispiel unter der Annahme, dass das Dataset qKasseTbl heißt: Wenn du die Felder persistent dem Dataset hinzugefügt hast, kannst du die DisplayFormat-Eigenschaft gleich im Objektinspektor setzen, oder im Code per qKasseTblDatum.DisplayFormat:='xyz'. Ansonsten geht auch qKasseTbl.FieldbyName('Datum').DisplayFormat:='xyz ' Wenn die Felder nicht persistent sind, geht's eigentlich nur über qKasseTbl.FieldbyName('Datum').DisplayFormat:='xyz ' - aber erst nachdem die Tabelle z.B. mit qKasseTbl.Open geöffnet wurde. Davor sind die Felder ja noch nicht verfügbar. |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Seit einigen Delphi-Versionen kann man ja auch persistente und nicht-persistente Felder nebeneinander im DataSet haben (siehe
![]() |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Kann es sein dass wir hier von verschiedenen Sprachen sprechen?
Bei "qKasse.FieldbyName('Datum')." gibt es keine DisplayFormat Eigenschaft. In den Persistenten Feldern finde ich weder im Query noch im Grid eine Eigenschaft Display Format. Es gibt in der Query unter FormatOptions die Eigenschaft FmtDisplayDateTime, diese habe ich auch auf "dd.mm.yyyy hh:nn:ss" gesetzt. |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
TField kennt kein DisplayFormat, TDateTimeField aber schon.
Wenn du bei deiner Query persistente Felder hast, welchen Typ hat dann das Feld für "Datum"? |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Liste der Anhänge anzeigen (Anzahl: 1)
Meine Query sieht so aus, wenn ich ein doppelklick auf die Query mache:
![]() Dort steht nur "Date" als Typ. Kann SQLite kein DateTime ? ich habe es aber im Create als DateTime angelegt.
Code:
qKasse.SQL.Text := 'Create Table If Not Exists Kasse ' +
'(Nr INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,' + ' Name VARCHAR(100), EPreis Real, Menge Integer,Frei VARCHAR(1), ' + 'Rabatt VARCHAR(1), Summe Real,Datum datetime, Bemerkung VARCHAR(200))'; qKasse.ExecSQL; |
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Liste der Anhänge anzeigen (Anzahl: 1)
|
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Liste der Anhänge anzeigen (Anzahl: 1)
|
AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Hier der Inhalt des Formulars frmKasse:
Code:
procedure TfrmKasse.FormActivate(Sender: TObject);
begin grdKasse.DataSource:=DM.dsKasse; GridKasseInit; end; procedure TfrmKasse.GridKasseInit; begin grdKasse.Columns[0].Width := 30; grdKasse.Columns[1].Width := 120; // Name grdKasse.Columns[2].Width := 50; // Prei grdKasse.Columns[3].Width := 50; // Menge grdKasse.Columns[4].Width := 40; // Frei grdKasse.Columns[5].Width := 40; // Rabatt grdKasse.Columns[6].Width := 50; // Summe grdKasse.Columns[7].Width := 180; // Datum grdKasse.Columns[8].Width := 300; // Bemerkung (DM.qKasse.FieldByName('Datum') as Tdatetimefield).DisplayFormat := 'dd.mm.yyyy hh:nn:ss'; // TDateTimeField(grdKasse.Columns[7].Field).DisplayFormat:= 'dd.mm.yyyy hh:nn:ss'; TCurrencyField(grdKasse.Columns[2].Field).DisplayFormat:= '###0.00'; TCurrencyField(grdKasse.Columns[3].Field).DisplayFormat:= '###0.00'; TCurrencyField(grdKasse.Columns[6].Field).DisplayFormat:= '###0.00'; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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 by Thomas Breitkreuz