【问题标题】:Clearing all DataSet Bookmarks清除所有数据集书签
【发布时间】:2013-08-13 20:01:33
【问题描述】:

大约在运行 D5 程序的一百次中,它会抛出“无效的书签”错误。在错误消息对话框中单击“确定”会越过它,系统运行正常。

这个应用程序中有大约 20 个 TDBGrids,并且所有这些都在显着点都有“清除”以清除书签。有 17 个数据集。

因为它非常罕见,而且我怀疑是因为用户在关闭之前做了一些事情(不是他们的错),所以很难找到并修复它。

我是否可以在启动时批量清除所有数据集中的所有书签?

我一直在这里读到,书签应该在“打开/关闭”时被清除,并且所有数据集都在启动时打开。

If Table1.Active then Table1.Close;  // They should never be Active but...
Table.Open;

有什么想法吗?

谢谢

【问题讨论】:

  • 书签是用来指向记录的内存结构。它们不是持久的,因此实际上每次关闭数据集时它们都会被清除。我怀疑您的问题是,当删除记录时,仍然会为其创建一个书签,并且数据集将保留对该记录的无效引用。在旧版本的 Delphi 中,程序员仍然负责在不再需要时调用 TDataset.FreeBookmark 来处理书签。程序员还负责在记录从数据集中删除之前将其设置为书签。
  • @AlexSC:确实。 D5 OLH 中的“标记和返回记录”并没有说明当数据集关闭时它们变得无效。 Imo,如果 OP 想要在那之后返回记录,那么通过唯一键获取它会更安全。

标签: delphi bookmarks delphi-5


【解决方案1】:

无法批量删除 TDataSet 的书签。您必须将它们一一释放。

旁注:使用书签时需要非常小心,在 TDataset 中进行任何更改(插入、更新或删除)后,您的书签将不再有效(通常它们仍然可以使用,但正式它们已经过时了并且需要刷新)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2011-11-04
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多