DBGrid Spalte Formatieren

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

DBGrid Spalte Formatieren

Beitrag von DL3AD »

Hallo,

ich habe in der Datenbank ein Datum als VARCHAR in folgendem Format vorliegen.
20160728
Nun möchte ich dieses Datum im DBGrid aber folgendermaßen angzeigt haben.
28.07.2016
Gibt es da eine Formatierungsmöglichkeit ?
Das DBGrid ist an einer TDatasource mit entsprechendem Feldnamen angeschlossen.

Gruß Frank

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: DBGrid Spalte Formatieren

Beitrag von af0815 »

Ich würde das nicht im Grid machen, sondern mir einen Event in der Datasource oder besser in den Fields heraussuchen und dort die Umwandlung machen, damit bekommt das Grid schon die richtigen Daten

Code: Alles auswählen

property OnChange: TFieldNotifyEvent; [rw] Event triggerd when the field's value has changed  
property OnGetText: TFieldGetTextEvent; [rw] Event to format the field's content 
property OnSetText: TFieldSetTextEvent; [rw] Event to set the field's content based on a user-formatted string
 
Siehe https://www.freepascal.org/docs-html/fcl/db/tfield.html

Damit kann man das ganze in beide Richtungen steuern. EIn einfaches Beispiel hier http://forum.lazarus.freepascal.org/ind ... ic=18241.0
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: DBGrid Spalte Formatieren

Beitrag von mse »

Eine Alternative wäre, das QSO-Datum nicht als VARCHAR in der Datenbank zu speichern, sondern mittels TDatetime als DATE oder noch besser qso_date und
rst_sent/rst_rcvd zu einem TDatetime zusammenzufassen und als DATETIME oder TIMESTAMP-Feld in der Datenbank abzulegen. Damit würde sich die chronologische Sortierung vereinfachen und für die Formatierung könnten die FCL-Standardmethoden angewandt werden.

Antworten