Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Werte im DBGrid ändern (https://www.delphipraxis.net/149935-werte-im-dbgrid-aendern.html)

aurikel_Max 3. Apr 2010 12:05

Re: Werte im DBGrid ändern
 
Zitat:

Zitat von haentschman
und wenn du statt der UniDirQuery eine "normale" Query verwendest ?

Frage: die TDISQL stammen woher ? Schon mal Zeos als alternative Zugriffskomponenten probiert ?

Für Zeos war ich zu doof, Zeos benötigt doch die sqlite3.dll, allerdings hab ich immer einen Fehler beim Zugriff auf die DB bekommen, obwohl ich die .dll hatte. Das könnte ich aber bei Gelegenheit nochmal versuchen.

Zum Thread .. das Problem besteht (aktuell) nicht mehr, da ich in "diesem" DBGrid das Datum gar nicht anzeige (wieso bin ich da gestern Nacht drauf gekommen?!), das Datum wird in einem späterem DBGrid nochmal angezeigt, hierfür muss es dann auch wieder formatiert werden, sollte ich trotz der Hilfe von "haentschman" dabei Probleme haben, werde ich nochmal nachfragen.

Frohe Ostern und Danke an haentschman.

aurikel_Max 4. Apr 2010 14:59

Re: Werte im DBGrid ändern
 
Zitat:

Zitat von aurikel_Max
das Datum wird in einem späterem DBGrid nochmal angezeigt, hierfür muss es dann auch wieder formatiert werden, sollte ich trotz der Hilfe von "haentschman" dabei Probleme haben, werde ich nochmal nachfragen.

Bei der Stelle bin ich nun und ich weiß nicht weiter, also wie gesagt, meine Daten liegen in der Datenbank in folgender Weise vor:

Zitat:

Datum (vom Typ "DATE")
2010-03-23
2010-04-02
usw... (alternativ stellt es kein Problem dar, die Werte als Strings zu speichern)
//Edit: Bei der Formatierung hab ich mich an "YYYY-MM-DD" gehalten, so wie es auf http://www.sqlite.org/lang_datefunc.html steht

Nun möchte ich in einem DBGrid die Werte aber so angezeigt bekommen:
Zitat:

23.03.2010
02.04.2010
usw...
Mein SelectSQL lautet nun:
SQL-Code:
SELECT datum FROM .. ORDER BY datum DESC
Was mich allerdings wundert und worauf ich auch keine Antwort weiß ist, dass wenn ich jetzt
Delphi-Quellcode:
Query.FieldByName('Datum').AsString
in die Watchliste tue, mir lediglich '2010' angezeigt wird. (in meinem DBGrid wird mir auch nur '2010' angezeigt)

Änder ich die Formatierung des Datums in der Datenbank auf:
Zitat:

20100323
20100402
usw... wird mir das komplette Datum angezeigt (allerdings ohne Punkte usw.).
Wenn ich jetzt
Delphi-Quellcode:
TDateTimeField(dsqlBlubbaQuery.FieldByName('Datum')).DisplayFormat := 'dd.mm.yyyy';
anwende, passiert gar nichts, das Datum wird mir weiterhin in meinem DBGrid als "20100323" usw. angezeigt.

Änder ich die Formatierung des Datums in der Datenbank auf:
Zitat:

2010.03.23
2010.04.02
Wird mir in meinem DBGrid folgendes angezeigt:
Zitat:

2010,04
2010,03
Da ich nicht verstehe, wie dies zustande kommt, wollte ich das Datum (wie ursprünglich vorgesehen) als String abspeichern (hier wird mir immer das komplette Datum angezeigt) und dann in die passende Formatierung bringen, hierbei habe ich verschiedene Ansätze probiert, allerdings war keiner erfolgreich. (die Ansätze kann ich bei Bedarf auch gerne posten)

Könnt ihr mir eine Lösung nennen, wie ich das Datum richtig formatiert in meinem DBGrid angezeigt bekomme?

Gruß
Max

haentschman 4. Apr 2010 15:39

Re: Werte im DBGrid ändern
 
ich nochmal... :zwinker:

wenn dein DB Feld vom Typ DATE ist wird in der DB das Datum als Integer abgelegt (so sollte es zumindest sein). Die "Umsetzung" in ein lesbares Datum macht das DBGrid von allein. Im Normalfall das im System eingestellte Format.

Fang einfach mal von ganz vorn an:
- alle Formatierungen raus
- einen DATE Wert aus der DB lesen (wie deine SQL Abfrage)
--> wie wird es im Grid angezeigt ?

Zitat:

Änder ich die Formatierung des Datums in der Datenbank auf:
:gruebel: wie machst du das denn ? Mit einem Tool ?

aurikel_Max 4. Apr 2010 16:02

Re: Werte im DBGrid ändern
 
Zitat:

Zitat von haentschman
ich nochmal... :zwinker:

Danke, dass Du mir weiterhin hilfst. :)

Zitat:

Zitat von haentschman
Zitat:

Änder ich die Formatierung des Datums in der Datenbank auf:
:gruebel: wie machst du das denn ? Mit einem Tool ?

Ja, das mache ich mithilfe von dem SQLite Datatabase Browser (http://sqlitebrowser.sourceforge.net/, Version: 2.0b1).


Zitat:

Zitat von haentschman
wenn dein DB Feld vom Typ DATE ist wird in der DB das Datum als Integer abgelegt (so sollte es zumindest sein). Die "Umsetzung" in ein lesbares Datum macht das DBGrid von allein. Im Normalfall das im System eingestellte Format.

Fang einfach mal von ganz vorn an:
- alle Formatierungen raus
- einen DATE Wert aus der DB lesen (wie deine SQL Abfrage)
--> wie wird es im Grid angezeigt ?

Okay, also ich formatiere mal die Daten in der Datenbank so :
http://img339.imageshack.us/img339/5...rmatierung.png
(ich hoffe, so meintest du das)

Meine SQL-Abfrage lautet nun:
SQL-Code:
SELECT Datum FROM aktienwerte;
(hab es zu "Testzwecken" darauf vereinfacht)

dann sieht mein DBGrid so aus:
http://img39.imageshack.us/img39/3951/dbgridsql.png

Jetzt hab ich allerdings gerade folgendes probiert und die SQL-Abfrage so gestaltet:
SQL-Code:
SELECT date(Datum) FROM aktienwerte;
dann sieht mein DBGrid so aus (wie kommen bitte die Werte zustande :D):
http://img190.imageshack.us/img190/8...datedbgrid.png

Zitat:

Zitat von haentschman
--> wie wird es im Grid angezeigt ?

Ich hoffe, ich konnte Dir Deine Frage beantworten.

DeddyH 4. Apr 2010 16:08

Re: Werte im DBGrid ändern
 
Hast Du das Feld als Typ int angelegt? Versuch es mal mit Date, das müsste SQLite auch kennen.

aurikel_Max 4. Apr 2010 16:16

Re: Werte im DBGrid ändern
 
Zitat:

Zitat von DeddyH
Hast Du das Feld als Typ int angelegt? Versuch es mal mit Date, das müsste SQLite auch kennen.

Ne, der Typ ist "DATE".

http://img97.imageshack.us/img97/1305/sqldate.png
(bevor Fragen aufkommen, in die Datenbank werden die täglichen Schlusskurse von verschiedenen Aktien durch den Benutzer eingetragen)

DeddyH 4. Apr 2010 16:17

Re: Werte im DBGrid ändern
 
Und wie trägst Du die Daten in die Tabelle ein?

aurikel_Max 4. Apr 2010 16:22

Re: Werte im DBGrid ändern
 
Zitat:

Zitat von DeddyH
Und wie trägst Du die Daten in die Tabelle ein?

Bisher noch mit der Hand (also über das SQLite Database Browser-Tool), später über:
Delphi-Quellcode:
    dsqlAktien.Execute16
      ('INSERT INTO aktienwerte(AktienID,Datum,Kurs) VALUES (' + #39 +
      string_id + #39 + ', ' + #39 + string_date + #39 + ', ' + #39 +
      string_value + #39 + ');');
wobei ich ja im Moment noch nicht weiß, wie ich das Datum formatieren muss (allerdings muss ich ja eh eine andere Variable (anstatt string_date) nehmen bzw. diese umwandeln, da der Typ "DATE" ja kein String ist).

Edit: Als ich gerade eine Freundin gefragt hab, wieso mein DBGrid Zahlen wie zB. "50320-08-27" anzeigt (bei "SELECT date(datum) FROM aktienwerte")
meinte sie
Zitat:

50320 könnten die tage von 1900 an sein
könnte das hinkommen?

Gruß.

DeddyH 4. Apr 2010 16:24

Re: Werte im DBGrid ändern
 
Ich hab jetzt nicht genau verfolgt, welche Lib Du für den Zugriff verwendest, aber wenn diese Parameter unterstützen sollte, solltest Du diese auf jeden Fall verwenden.

haentschman 4. Apr 2010 16:24

Re: Werte im DBGrid ändern
 
Der Database Browser formatiert nur die optische Ausgabe. Der Inhalt in der DB wird dabei nicht verändert (wenn es ein DATE Feld ist).

1. Laß mal den Browser einmal aus den Augen.
2. Zeige, wie du das Datum in die DB einträgst.
3. wenn du per SQL das Datum ausliest, wie wird das Datum in einem normalen DBGrid angezeigt ?

Edit:
- wie Deddy schon sagte, Parameter sind besser.
Zitat:

string_date
- wenn das das Datum als String ist... ersetzen durch IntToStr(StrToDate(string_date)) Dabei passiert folgendes: der String wird in einen Date Wert umgewandelt und dann in einen String damit das in deinen SQL String paßt. So was ist mit Vorsicht zu genießen. Parameter sind eindeutiger und weniger kompliziert.

Zitat:

(bei "SELECT date(datum) FROM aktienwerte")
...nur
Delphi-Quellcode:
SELECT datum FROM aktienwerte
damit liest du den Date Wert ohne Umwandlung. Diese macht das Grid.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr.
Seite 2 von 5     12 34     Letzte »    

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