全部显示

Bookmark 属性

       

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

expression.Bookmark

expression   必需。返回“Applies To”列表中的一个对象的表达式。

设置

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 = "[联系人姓名] Like '*" & InputBox("输入待找姓名的前几个字") & "*'"

    Set rst = Me.RecordsetClone
    rst.FindFirst strCriteria
    If rst.NoMatch Then
        MsgBox "未找到任何条目。", vbInformation
    Else
        Me.Bookmark = rst.Bookmark
    End If

    Set rst = Nothing

End Sub