![]() |
Datenbank: SQLite • Version: 3.6.23 • Zugriff über: TDISQLite3 Personal
Werte im DBGrid ändern
Seid gegrüßt,
ich speichere meine Daten in meiner Datenbank in folgendem Format: yyyy-mm-tt, in meinem DBGrid möchte ich sie aber im Format tt-mm-yyyy anzeigen, dafür muss ich die Daten ja an einer bestimmten Stelle ändern. Das wollte ich an der AfterOpen-Prozedur des ClientDataSets machen, hab also folgende Prozedur geschrieben:
Delphi-Quellcode:
Das geht allerdings schief, da ich folgenden Fehler bekomme:
procedure TfmBlubba.cdsBlubbaAfterOpen(DataSet: TDataSet);
begin cdsBlubba.Close; //ohne das, bekomme ich den Fehler, dass ich nicht im Insert-Modus bin while not cdsBlubba.eof do begin cdsBlubba.FieldByName('datum').Text := FormatDateDeu(cdsBlubba.FieldByName('datum').Text); //FormatDateDeu ist eine von mir geschriebene function cdsBlubba.Next; end; cdsBlubba.Open; end; ![]() ![]() ( ![]() Darum die Frage, was an meinem Ansatz falsch ist .. oder muss ich erst beim DBGrid in der DrawColumnCell die Werte ändern? Gruß und frohe Ostern. |
Re: Werte im DBGrid ändern
Hallo :hi:
Versuche mal folgendes: 1. Deine Versuche weglassen 2. nach dem Erzeugen des Datasets oder im OnCreate des Formulars
Delphi-Quellcode:
3. dann sind alle Werte des Feldes Datum des Datasets cdsBlubba entsprechend des Formatstrings angepaßt
TDateTimeField(cdsBlubba.FieldByName('datum')).DisplayFormat:='dd.mm.yyyy';
PS: - solange das Dataset existiert bleibt die Formatierung bestehen. Auch nach Datenänderung. - es gibt auch z.B. TNumericField wo man z.B. Floatwerte in der Darstellung formatieren kann. ob der FormatString so paßt mußt du probieren. Nachfrage: liegt das Datum in der DB als String oder als Date Wert ? Im Falle des Strings funktioniert das nicht :roll: |
Re: Werte im DBGrid ändern
Zitat:
Danke (schonmal) für Deine/Eure Hilfe. :) |
Re: Werte im DBGrid ändern
Guten Morgen...
Zitat:
|
Re: Werte im DBGrid ändern
Zitat:
Zitat:
![]() ![]() |
Re: Werte im DBGrid ändern
Nun...
ich habe es gerade mal probiert und exakt das Ergebnis erhalten was zu erwarten war. Falsch war allerdings, daß die Formatierung auch nach dem Neuladen des Datasets beibehalten wird. Es muß wieder neu gesetzt werden. Kann es sein, daß deine Spaltenbreite einfach nicht zur Darstellung ausreicht ? Ansonsten fällt mir nichts dazu ein. :gruebel: Edit: Zitat:
- Welche Komponente ist das Dataset ? (Standard / Fremdkomponente) Edit2: ...auch wenn der fehlende Buchstabe bereits nicht kopiert wurde :stupid: |
Re: Werte im DBGrid ändern
Zitat:
Das Dataset ist ein TClientDataSet. Der ganze Zugriff erfolgt über: TDISQLite3Database -> TDISQLite3UniDirQuery -> TDataSetProvider -> TClientDataSet -> TDataSource -> TDBGrid. (außer TDISQLite3Database und TDISQLite3UniDirQuery sind alle anderen Standardkomponenten) Liebe Grüße. |
Re: Werte im DBGrid ändern
hmmm...
mit SQLite kenn ich mich nicht wirklich aus. Aber die TDISQLite3UniDirQuery ist doch ein Dataset oder ? Warum mußt du noch einen Provider und ein ClientDataset zwischen der Query und die Datasource basteln ? Versuch mal die Formatierung auf die Query und den Provider und das ClientDataset weglassen. Das heißt die Datasource direkt an die TDISQLite3UniDirQuery. |
Re: Werte im DBGrid ändern
Zitat:
Allerdings machen "wir" Fortschritte, ich hab gerad
Delphi-Quellcode:
gemacht, das hat auch einen gewissen Erfolg, jetzt steht in meinem DBGrid unter Datum allerdings nur "2010" (in 6 Einträgen). (wenn ich die Spalte zur Laufzeit vergrößere, steht da trotzdem nur 2010)
procedure TfmBlubba.dsqlBlubbaQueryAfterOpen(DataSet: TDataSet);
begin TDateTimeField(dsqlBlubbaQuery.FieldByName('Datum')).DisplayFormat := 'dd.mm.yyyy'; end; |
Re: Werte im DBGrid ändern
und wenn du statt der UniDirQuery eine "normale" Query verwendest ?
Frage: die TDISQL stammen woher ? Schon mal Zeos als alternative Zugriffskomponenten probiert ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 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