Einzelnen Beitrag anzeigen

Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#9

Re: datum/zeit automatisch in tabelle ?

  Alt 12. Dez 2003, 18:35
O.k. O.k. Gelesen, aber nich verstanden is ja was ganz anderes
Also:

Du legst Dir in der betreffenden Tabelle ein Feld vom Typ Timestamp an. Ausserdem solltest Du unbedingt ein IdFeld vom Typ auto_increment in der Tabelle haben (für später merken).
Immer, wenn Du nun einen Datensatz in diese Tabelle Neu einfügst und dabei keinen Wert für die Timestamp-Spalte angibst, setzt der MySQL-Server automatisch einen Wert in diese Spalte. So weit so schön.
Nun kommt es darauf an, was Du möchtest. Reicht Dir das Wissen um die letzte Bearbeitung, oder möchtest Du darüber hinaus auch noch wissen, wann der Datensatz erzeugt wurde?
Im ersten Fall würdest Du nun immer, wenn der Datensatz geändert wird, in das Timestamp-Feld die aktuelle Zeit einfügen.
Ich hör Dich schon schreien: "Was, wenn die Änderung im DB-Grid erfolgt?" Nun. Das DB-Grid ändert nur Feldwerte. Den eigentlichen Datensatz ändert das Dataset (TQuery oder TAdoQuery), an welches Du das Grid über eine TDataSource gekoppelt hast. Und Genau dort, am DataSet, ´kannst Du ansetzen: leg Dir eine 2. Query an. Verpass ihr folgenden SQL-Text:
SQL-Code:
  Update TabellenName
     set TimeStampFeldName = CURRENT_TIMESTAMP()
   where IdFeldName = :UnserIdParameter
im Ereignis "AfterPost" des DataSets mochst Du dann folgendes:
Delphi-Quellcode:
procedure TForm1.Query1AfterPost(DataSet: TDataSet);
begin
  Query2.ParamByName('UnserIdParameter').AsInteger := Query1.FieldByName('IdFeldName').AsString;
  Query2.ExecSQL;
end;
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat