Bookmark 属性

expandtri全部显示

使用窗体的 Bookmark 属性可以设置书签,以唯一标识窗体基础表、查询或 SQL 语句中的特定记录Variant 可读/写。

expression.Bookmark

expression     必需。返回“应用于”列表中的一个对象的表达式。

设置

Bookmark 属性包含一个由 Microsoft Access 创建的字符串表达式

可以使用或者 Visual Basic 设置该属性。

注释  可以分别从基础表或基础查询的 ADO Bookmark 或 DAO Bookmark 属性中,获取或设置窗体的 Bookmark 属性。

说明

“窗体”视图中打开绑定窗体时,系统为每条记录指定了一个唯一的书签。在 Visual Basic 中,可以通过将窗体 Bookmark 属性的值分配给字符串变量,来保存当前记录的书签。若要在移到其他记录后返回到一个已保存的记录,只需将窗体的 Bookmark 属性设置为已保存的字符串变量的值即可。可以使用 StrComp 函数将 Variant 或字符串变量与书签进行比较,或者将书签与书签进行比较。必须将 StrComp 函数的第三个参数设为零值。

注释  书签不和它所代表的记录一起保存,并且只在窗体打开时才有效。每次打开绑定窗体时,Microsoft Access 都将重建书签。

如果每个书签都使用唯一的字符串变量来保存,则保存书签的数目将不受限制。

Bookmark 属性只在窗体的当前记录中可用。若要保存除当前记录以外的其他某个记录的书签,需移到相应的记录,然后将 Bookmark 属性的值分配给标识此记录的字符串变量。

可以在完全基于 Microsoft Access 表的任意窗体中使用书签。但其他数据库产品可能不支持书签。例如,在基于无主索引链接表的窗体中就不能使用书签。

重新查询窗体会使在窗体记录上设置的所有书签失效,但单击“记录”菜单上的“刷新”命令则不会影响书签。

因为当窗体打开时,Microsoft Access 为窗体记录集中的每一条记录都创建一个唯一的书签,所以一个窗体的书签不能用于另一个记录集,即使这两个记录集都基于相同的表、查询或 SQL 语句。例如,假设用户打开了一个绑定到“客户”表的窗体。接下来,如果该用户使用 Visual Basic 打开“客户”表并使用 ADO Seek 或 DAO Seek 方法来定位表中的特定记录,则不能将窗体的 Bookmark 属性设置为当前表记录。若要执行此类型的操作,可以将 ADO 的 Find 方法或 DAO 的 Find 方法与窗体的 RecordsetClone 属性一起使用。

如果将 Bookmark 属性设置为一个字符串变量,然后试图在记录已删除后返回该记录,则会产生错误。

Bookmark 属性值不同于记录编号。

示例

若要使用“罗斯文”示例数据库测试以下示例,需要将一个名为 cmdFindContactName 的命令按钮添加到“供应商”窗体中,然后将下列代码添加到此按钮的“单击”事件中。单击此按钮时,将要求用户输入要查找的联系人姓名的一部分。如果找到,窗体的 Bookmark 属性将设置为 Recordset 对象的 DAO Bookmark 属性,该属性将窗体的当前记录移到找到的姓名处。

Private Sub cmdFindContactName_Click()

    Dim rst As DAO.Recordset

    Dim strCriteria As String

    strCriteria = "[ContactName] Like '*" & InputBox("Enter the " _

        & "first few letters of the name to find") & "*'"

    Set rst = Me.RecordsetClone

    rst.FindFirst strCriteria

    If rst.NoMatch Then

        MsgBox "No entry found.", vbInformation

    Else

        Me.Bookmark = rst.Bookmark

    End If

    Set rst = Nothing

End Sub