【问题标题】:Delphi ADO + bookmarksDelphi ADO + 书签
【发布时间】:2010-10-25 08:24:30
【问题描述】:

我目前正在开发一个动态使用数据库的应用程序。

意味着它被设计用于任何时间、任何结构的任何数据库。

我的担心是我希望“标记”某些记录或为某些记录添加书签,因此我需要使用 Filter 属性进行一些搜索,最后我希望删除过滤器,并且能够搜索加书签的记录...

然而,书签似乎只在过滤器设置在指定过滤器上时才起作用,所以如果我选择我的第二个书签项目,我收到的记录与我预期的完全不同,即我做了一个过滤器,并为第一条记录,当我删除过滤器并转到书签 #1 时,我仍然只是去记录 nr。 1.

还有其他方法可以做到这一点吗?还是需要以其他方式执行此操作?

希望这里有人对此有一些疯狂的真正解决方案:)

【问题讨论】:

    标签: delphi ado


    【解决方案1】:

    Delphi 中的数据集只能为一条记录添加书签。 TDataset.BookMark 是该书签记录的占位符。过滤数据集时创建的书签在过滤器消失后也有效。因此,如果您过滤数据集并为记录添加书签,然后删除过滤器并转到您的书签记录,您应该会访问相同的记录。

    如果您不确定您的书签是否仍然有效,特别是在编辑数据集时;那么您可以使用 TDataset.BookmarkValid 方法来验证您的书签。

    如果您想要一个书签列表(不仅仅是一个书签记录),那么您必须将它们保存在一个列表或数组中。在 Delphi 2009 和更新版本中,TBookMark 数据类型定义为 TBytes。在以前的版本中,TBookMark 被定义为字符串。因此,如果您使用的是 Delphi 2009 之前的 Delphi 版本,则可以使用 TStringList 的实例来保存书签列表。如果您使用的是 Delphi 2009 及更高版本,则可以使用 TList 泛型类型的实例(在 Generics.Collections 单元中声明)来存储书签列表。

    如果您使用 DBGrid,DBGrid 有一个名为 SelectedRows 的属性,它的类型为 TBookMarkList。您可以使用它来保存网格中选定行的书签列表。您需要在 DBGrid 的选项中启用多选。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多