Thema: Delphi Werte im DBGrid ändern

Einzelnen Beitrag anzeigen

aurikel_Max

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

Re: Werte im DBGrid ändern

  Alt 4. Apr 2010, 19:54
Also, ich habe mir gerad zu Testzwecken ein kleines Programm geschrieben, das erzeugt die Datenbank nach folgenden Befehlen:

Delphi-Quellcode:
dsqlDatabase.DatabaseName := 'aktien.db';
dsqlDatabase.CreateDatabase;
dsqlDatabase.Execute16('CREATE TABLE aktienwerte (Datum DATE);');
Jetzt hab ich in den Demos zu der Komponente etwas gefunden, das hab ich mal für meinen Fall umgeschrieben:
Delphi-Quellcode:
procedure TfmDate.btInsertClick(Sender: TObject);
const
  InsertSQL = 'INSERT INTO aktienwerte (Datum) VALUES (?);';
var
  Datum: string;
  Stmt: TDISQLite3Statement;
begin
  Datum := '2010-12-01';
  Stmt := dsqlDatabase.Prepare16(InsertSQL);
  try
    Stmt.Bind_Str16(1, Datum);
    Stmt.Step;
  finally
    Stmt.Free;
  end;
end;
Das entspricht doch den Parametern oder?
Dennoch speichere ich im Moment das Datum ebenfalls als String ab (oder?), allerdings gibt es auch keine Stmt.Bind_Date Funktion in der Demo hatte ich allerdings zu dem Punkt folgendes Zitat gefunden:
Zitat:
{ We bind all columns as strings. DISQLite3 will convert them to
integers or floats as appropriate. }
(wobei mein Datum ja trotzdem kein Integer bzw. Float ist)

Jetzt hatte ich ebenfalls probiert, ein Insert über die Query-Komponente zu versuchen, dabei hatte ich folgendes geschrieben:

Delphi-Quellcode:
procedure TfmDate.btInsert2Click(Sender: TObject);
begin
  dsqlQuery.InsertSQL :=
    'INSERT INTO aktienwerte (Datum) VALUES (:Datum);';
  dsqlQuery.Params.ParamByName('Datum').Value := StrtoDate('2010/12/01');
  dsqlQuery.Insert;
end;
Dabei bekomm ich aber immer den Fehler, dass 2010-12-01 kein gültiges Datum ist. (ich hatte ebenfalls "20101201", 2010.12.01, "2010,12,01" und 2010/12/01 versucht -> überall der gleiche Fehler).


Über die erste Insert-Methode konnte ich Werte in die Datenbank schreiben (auch wenn ich das Datum als String speichere), wenn ich die gespeicherten Werte nun anzeigen möchte, wird mir in dem DBGrid nur "2010" angezeigt.

(bei Interesse kann ich auch gern den ganzen Code posten bzw. hochladen)
Max
  Mit Zitat antworten Zitat