先雙擊 clientdataset --> Add all fileds,然後注意 autoinc 欄位的 ReadOnly 屬性是 false。
...
var
Form2: TForm2;
// 因為 database 給 autoInc 欄位的值是正值,
// 所以我們給的暫時值採負值, 避免另一個 keyviolation 情況
sid: integer = -1;
implementation
{$R *.dfm}
procedure TForm2.cdsTableNewRecord(DataSet: TDataSet);
begin
DataSet.FieldByName('tid').AsInteger := sid;
Dec(sid);
end;
procedure TForm2.btnSaveClick(Sender: TObject);
begin
// 在 applyupdate, 正式存入 database 後,
// 再將 sid 歸為 -1
if (cdsTable.ApplyUpdates(0)=0) then
begin
sid := -1;
cdsTable.Refresh; // 更新一下 取得 databaseset 給的正式值
end;
end;
↑ 這裡我們給予 table 的 tid 欄位暫時的負值。
↑ applyupdate 後,正式將資料存回 database,並向 database 取得新的實際的 tid 欄位的值。



沒有留言:
張貼留言