FLastID: Integer;
........
procedure TForm1.ClientDataSet1BeforeInsert(DataSet: TDataSet);
var
b: TBookMark;
begin
with DataSet do
begin
DisableControls;
b := GetBookmark;
try
Last;
FLastID := DataSet.FindField('id').AsInteger;
GotoBookmark(b);
finally
FreeBookmark(b);
EnableControls;
end;
end;
end;
procedure TForm1.ClientDataSet1AfterInsert(DataSet: TDataSet);
begin
DataSet.FindField('id').AsInteger := FLastID + 1;
end;