我正在工作的项目中有如下代码。
procedure TForm.EditBtnClick(Sender:TObject);
begin
// Mark is form variable. It's private
Mark = cdsMain.GetBookmark;
// blabalbal
.
.
.
end;
procedure TForm.OkBtnClick(Sender:TObject);
var
mistakes: Integer;
begin
//Validation stuff and transaction control
//removed to not clutter the code
If cdsMain.ChangeCount <> 0 then
mistakes := cdsMain.AppyUpdates(-1);
cdsMain.Refresh;
try
cdsMain.GotoBookmark(Mark);
// Yes, I know I would have to call FreeBookmark
// but I'm just reproducing
except
cdsMain.First;
end;
end;
就个人而言,我很少使用书签——除了重新定位我只移动光标位置的数据集(创建列表、填充字符串列表等)。如果我Refresh
、更新(特别是当过滤器可以使记录不可见时)、重新获取(Close
/ Open
)或任何修改数据集中数据的操作,我不使用书签。我更喜欢Locate
在主键上(TClientDataset
当然使用 a )或重新查询修改参数。
书签的有效期到什么时候?直到一个Refresh
?直到Close
/Open
完成重新获取数据?安全区在哪里结束?
考虑一下我TClientDataset
与TSQLQuery
(DbExpress)一起使用的答案。