gpt4 book ai didi

delphi - TDataset 书签的有效期是多长时间?

转载 作者:行者123 更新时间:2023-12-03 14:41:49 26 4
gpt4 key购买 nike

我正在工作的项目中有如下代码。

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;

就我个人而言,我不太使用书签 - 除了重新定位数据集(仅移动光标位置)(创建列表、填充字符串列表等)。如果我刷新、更新(特别是当过滤器可以使记录不可见时)、重新获取(关闭/打开)或任何修改记录的操作数据集中的数据,我不使用书签。我更喜欢在主键上Locate(当然使用TClientDataset)或重新查询修改参数。

书签的有效期到什么时候?直到刷新?直到完成 Close/Open 才能重新获取数据?安全区的尽头在哪里?

考虑一下答案,我将 TClientDatasetTSQLQuery (DbExpress) 结合使用。

最佳答案

喜欢 c0rwinskamradt已经提到:书签行为取决于您使用的 TDataSet 后代。

一般来说,书签在以下情况下无效:

  1. 关闭/打开
  2. 刷新(在支持它的数据集上)
  3. 数据更改(有时仅删除)

我知道 1. 和 2. 可能会使您在 TClientDataSets 中的书签无效。我几乎可以肯定,对于 TClientDataSets,使用哪个底层提供程序(TSQLQuery、TIBQuery 等)并不重要。

确定哪些有效、哪些无效的唯一方法是对其进行测试。这意味着您不使用它们是完全正确的:书签本质上有可能不可靠。

为了安全起见,请在转到书签之前始终调用 BookmarkValid

关于delphi - TDataset 书签的有效期是多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/849568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com