AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Werte im DBGrid ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Werte im DBGrid ändern

Ein Thema von aurikel_Max · begonnen am 2. Apr 2010 · letzter Beitrag vom 4. Apr 2010
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#1

Werte im DBGrid ändern

  Alt 2. Apr 2010, 20:46
Datenbank: SQLite • Version: 3.6.23 • Zugriff über: TDISQLite3 Personal
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:
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;
Das geht allerdings schief, da ich folgenden Fehler bekomme:

http://img215.imageshack.us/img215/4610/fehlera.png
(http://img215.imageshack.us/img215/4610/fehlera.png)

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.
Max
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#2

Re: Werte im DBGrid ändern

  Alt 2. Apr 2010, 20:58
Hallo

Versuche mal folgendes:
1. Deine Versuche weglassen
2. nach dem Erzeugen des Datasets oder im OnCreate des Formulars
TDateTimeField(cdsBlubba.FieldByName('datum')).DisplayFormat:='dd.mm.yyyy'; 3. dann sind alle Werte des Feldes Datum des Datasets cdsBlubba entsprechend des Formatstrings angepaßt

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
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#3

Re: Werte im DBGrid ändern

  Alt 2. Apr 2010, 21:26
Zitat von haentschman:
Hallo

Versuche mal folgendes:
1. Deine Versuche weglassen
2. nach dem Erzeugen des Datasets oder im OnCreate des Formulars
TDateTimeField(cdsBlubba.FieldByName('datum')).DisplayFormat:='dd.mm.yyyy'; 3. dann sind alle Werte des Feldes Datum des Datasets cdsBlubba entsprechend des Formatstrings angepaßt

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
Das Datum wurde ursprünglich als String gespeichert (da das bisher für meine Zwecke ausgereicht hat), habs gerad geändert. Als es als String vorlag hab ich eine Exception bekommen, seitdem es als Datum gespeichert wird, tritt keine Exception mehr auf, allerdings sind die Werte in dem DBGrid jetzt alle: ddmmyyyy

Danke (schonmal) für Deine/Eure Hilfe.
Max
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#4

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 07:59
Guten Morgen...
Zitat:
allerdings sind die Werte in dem DBGrid jetzt alle: ddmmyyyy
mit deiner Funktion oder mit TDateTimeField ?
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#5

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 09:08
Zitat von haentschman:
Guten Morgen...
Zitat:
allerdings sind die Werte in dem DBGrid jetzt alle: ddmmyyyy
mit deiner Funktion oder mit TDateTimeField ?
Zitat:
TDateTimeField(cdsBlubba.FieldByName('datum')).Dis playFormat:='dd.mm.yyyy';
Wenn ich den Code 1:1 übernehme und den Namen von cdsBlubba anpasse, sind in meinem DBGrid alle Werte unter Datum "ddmmyyyy". (meine Funktion benutz ich hierbei nicht mehr)

http://img708.imageshack.us/img708/1356/datum.png
Max
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#6

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 10:49
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.

Edit:
Zitat:
und den Namen von cdsBlubba anpasse
- Ich denke, daß Dataset heißt so ?
- Welche Komponente ist das Dataset ? (Standard / Fremdkomponente)

Edit2:
...auch wenn der fehlende Buchstabe bereits nicht kopiert wurde
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#7

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 11:07
Zitat von haentschman:
Zitat:
und den Namen von cdsBlubba anpasse
- Ich denke, daß Dataset heißt so ?
- Welche Komonente ist das Dataset ? (Standard / Fremdkomponente)
Das Dataset heißt anders, ich benutze andere Namen hier im Forum.
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.
Max
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#8

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 11:15
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.
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#9

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 11:35
Zitat von haentschman:
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.
Wenn ich die TDSIQLite3UniDirQuery mit dem Datasource verbinde, bekomme ich die Fehlermeldung: "Operation not allowed on a unidirectional dataset."

Allerdings machen "wir" Fortschritte, ich hab gerad

Delphi-Quellcode:
procedure TfmBlubba.dsqlBlubbaQueryAfterOpen(DataSet: TDataSet);
begin
  TDateTimeField(dsqlBlubbaQuery.FieldByName('Datum')).DisplayFormat := 'dd.mm.yyyy';
end;
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)
Max
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#10

Re: Werte im DBGrid ändern

  Alt 3. Apr 2010, 11:43
und wenn du statt der UniDirQuery eine "normale" Query verwendest ?

Frage: die TDISQL stammen woher ? Schon mal Zeos als alternative Zugriffskomponenten probiert ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 16:50 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