Delphi ADO +书签

时间:2010-10-25 08:24:31

标签: delphi ado

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

意味着它可以在任何时间和任何结构中与任何数据库一起使用。

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

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

有没有其他方法可以做到这一点?或者是否需要以不同的方式做到这一点?

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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