先雙擊 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 欄位的值。
沒有留言:
張貼留言