AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00
Thema durchsuchen
Ansicht
Themen-Optionen

DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

Ein Thema von Smiley · begonnen am 9. Jul 2022 · letzter Beitrag vom 11. Jul 2022
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 9. Jul 2022, 15:17
Datenbank: SQLite • Version: D10.4 • Zugriff über: FireDAC
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:
TDateTimeField(grdKasse.Columns[7].Field).DisplayFormat:= 'dd.mm.yyyy hh:nn:ss';
Als Anzeige im Grid bekomme ich aber angezeigt "07.07.2022 00:00:00"
In der Tabelle sind unterschiedliche Zeiten enthalten. Nur das DBGrid zeigt es als 00:00:00 an.
Definiert wurde die Tabelle mit:

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;
Könnt ihr mir da einen Tip geben was ich falsch mache?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 9. Jul 2022, 20:14
Hallo,
mal dd.mm.yy probiert?

Zum Test, ob das DisplayFormat überhaupt funktioniert.
Heiko
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
436 Beiträge
 
Delphi 12 Athens
 
#3

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 09:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 10:54
Seit einigen Delphi-Versionen kann man ja auch persistente und nicht-persistente Felder nebeneinander im DataSet haben (siehe TFieldsAutoCreationMode). Dann legt man sich die eben persistent an, bei denen man bestimmte Einstellungen oder Events haben will und die anderen lässt man automatisch erzeugen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 13:30
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#6

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 13:53
TField kennt kein DisplayFormat, TDateTimeField aber schon.

Wenn du bei deiner Query persistente Felder hast, welchen Typ hat dann das Feld für "Datum"?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 14:10
Meine Query sieht so aus, wenn ich ein doppelklick auf die Query mache:
https://www.delphipraxis.net/attachm...1&d=1657454877

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;
Miniaturansicht angehängter Grafiken
qkasset.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 14:14
Hier noch ein Bild von den Feldern im DBGrid
https://www.delphipraxis.net/attachm...1&d=1657455266
Miniaturansicht angehängter Grafiken
grid.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 14:20
So sieht es im SQLiteSpy aus:
https://www.delphipraxis.net/attachm...1&d=1657455639
Miniaturansicht angehängter Grafiken
sqlitespy.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: DateTime Anzeige in DBGrid ist bei der Zeit 00:00:00

  Alt 10. Jul 2022, 14:50
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz