【发布时间】:2010-10-25 09:00:05
【问题描述】:
我正在工作的项目中有如下代码。
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)或者重新查询修改参数。
书签的有效期到什么时候?直到Refresh?直到完成Close/Open 以重新获取数据?安全区在哪里结束?
请考虑在答案中我使用 TClientDataset 和 TSQLQuery (DbExpress)。
【问题讨论】:
标签: delphi dbexpress tclientdataset