使用窗體的 Bookmark 屬性可以設(shè)置書(shū)簽,以唯一標(biāo)識(shí)窗體基礎(chǔ)表、查詢(xún)或 SQL 語(yǔ)句中的特定記錄。Variant 可讀/寫(xiě)。
expression.Bookmark
expression 必需。返回“應(yīng)用于”列表中的一個(gè)對(duì)象的表達(dá)式。
Bookmark 屬性包含一個(gè)由 Microsoft Access 創(chuàng)建的字符串表達(dá)式。
可以使用宏或者 Visual Basic 設(shè)置該屬性。
注釋 可以分別從基礎(chǔ)表或基礎(chǔ)查詢(xún)的 ADO Bookmark 或 DAO Bookmark 屬性中,獲取或設(shè)置窗體的 Bookmark 屬性。
在“窗體”視圖中打開(kāi)綁定窗體時(shí),系統(tǒng)為每條記錄指定了一個(gè)唯一的書(shū)簽。在 Visual Basic 中,可以通過(guò)將窗體 Bookmark 屬性的值分配給字符串變量,來(lái)保存當(dāng)前記錄的書(shū)簽。若要在移到其他記錄后返回到一個(gè)已保存的記錄,只需將窗體的 Bookmark 屬性設(shè)置為已保存的字符串變量的值即可??梢允褂?StrComp 函數(shù)將 Variant 或字符串變量與書(shū)簽進(jìn)行比較,或者將書(shū)簽與書(shū)簽進(jìn)行比較。必須將 StrComp 函數(shù)的第三個(gè)參數(shù)設(shè)為零值。
注釋 書(shū)簽不和它所代表的記錄一起保存,并且只在窗體打開(kāi)時(shí)才有效。每次打開(kāi)綁定窗體時(shí),Microsoft Access 都將重建書(shū)簽。
如果每個(gè)書(shū)簽都使用唯一的字符串變量來(lái)保存,則保存書(shū)簽的數(shù)目將不受限制。
Bookmark 屬性只在窗體的當(dāng)前記錄中可用。若要保存除當(dāng)前記錄以外的其他某個(gè)記錄的書(shū)簽,需移到相應(yīng)的記錄,然后將 Bookmark 屬性的值分配給標(biāo)識(shí)此記錄的字符串變量。
可以在完全基于 Microsoft Access 表的任意窗體中使用書(shū)簽。但其他數(shù)據(jù)庫(kù)產(chǎn)品可能不支持書(shū)簽。例如,在基于無(wú)主索引鏈接表的窗體中就不能使用書(shū)簽。
重新查詢(xún)窗體會(huì)使在窗體記錄上設(shè)置的所有書(shū)簽失效,但單擊“記錄”菜單上的“刷新”命令則不會(huì)影響書(shū)簽。
因?yàn)楫?dāng)窗體打開(kāi)時(shí),Microsoft Access 為窗體記錄集中的每一條記錄都創(chuàng)建一個(gè)唯一的書(shū)簽,所以一個(gè)窗體的書(shū)簽不能用于另一個(gè)記錄集,即使這兩個(gè)記錄集都基于相同的表、查詢(xún)或 SQL 語(yǔ)句。例如,假設(shè)用戶(hù)打開(kāi)了一個(gè)綁定到“客戶(hù)”表的窗體。接下來(lái),如果該用戶(hù)使用 Visual Basic 打開(kāi)“客戶(hù)”表并使用 ADO Seek 或 DAO Seek 方法來(lái)定位表中的特定記錄,則不能將窗體的 Bookmark 屬性設(shè)置為當(dāng)前表記錄。若要執(zhí)行此類(lèi)型的操作,可以將 ADO 的 Find 方法或 DAO 的 Find 方法與窗體的 RecordsetClone 屬性一起使用。
如果將 Bookmark 屬性設(shè)置為一個(gè)字符串變量,然后試圖在記錄已刪除后返回該記錄,則會(huì)產(chǎn)生錯(cuò)誤。
Bookmark 屬性值不同于記錄編號(hào)。
若要使用“羅斯文”示例數(shù)據(jù)庫(kù)測(cè)試以下示例,需要將一個(gè)名為 cmdFindContactName 的命令按鈕添加到“供應(yīng)商”窗體中,然后將下列代碼添加到此按鈕的“單擊”事件中。單擊此按鈕時(shí),將要求用戶(hù)輸入要查找的聯(lián)系人姓名的一部分。如果找到,窗體的 Bookmark 屬性將設(shè)置為 Recordset 對(duì)象的 DAO Bookmark 屬性,該屬性將窗體的當(dāng)前記錄移到找到的姓名處。
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