Ich habe folgendes ausprobiert und bin langsam entnervt, dass es einfach nicht klappt:
Delphi-Quellcode:
DM.IBDataSet1.Close;
DM.IBDataSet1.InsertSQL.Text := 'Select * from UDAT';
DM.IBDataSet1.Open;
DM.IBDataSet1.Edit;
DM.IBTransaction.Active := True;
DbEdit1.Text := '15.10.2004'; DbEdit2.Text := 'Stehle, Ralf';
DM.IBDataSet1.FieldByName('ID').AsInteger := GetNextNumber;
DM.IBTransaction.Commit;
DM.IBDataSet1.Post;
GetNextNumber holt sich für das AutoIncrement-Feld aus folgender Funktion die Zahl
Delphi-Quellcode:
function GetNextNumber: integer;
begin
DM.IBQuery1.Active := False;
DM.IBQuery1.SQL.Text := 'Select Gen_ID(GEN_UDAT, 1) AS ID from rdb$database';
DM.IBQuery1.Active := true;
if DM.IBQuery1.RecordCount >= 0 then
result := DM.IBQuery1.FieldByName('ID').AsInteger + 1
else result := 1;
end;
Es sieht zunächst alles so schön aus, aber sobald das Post kommt sind die Daten wieder weg !!! Auch wenn ich statt 'Select * from UDAT' eine Insert-Anweisung schreibe, kommt es auf das gleiche heraus. Ich habe eine Select-Anweisung gewählt, da ich ja noch nicht weiß, welche Werte eingefügt werden sollen. Die Werte möchte ich ja in den DBEdit-Feldern editieren