フォームで Bookmark プロパティを使用して、フォームの基になるテーブル、クエリ、または SQL ステートメント内の特定のレコードを一意に識別するブックマークを設定します。 値の取得と設定が可能なバリアント型 (Variant) の値です。
構文
式。ブックマーク
expressionForm オブジェクトを表す変数です。
注釈
注:
基になるテーブルまたはクエリの ADO の Bookmark プロパティまたは DAO の Bookmark プロパティから、フォームの Bookmark プロパティを個別に取得または設定することができます。
フォーム ビューで連結フォームを開くと、各レコードに固有のブックマークが与えられます。 カレント レコードのブックマークは、Visual Basic でフォームの Bookmark プロパティの値を文字列変数に代入することによって保存できます。 他のレコードに移動した後でも、この変数をフォームの Bookmark プロパティに指定すると、ブックマークを保存したレコードに戻ることができます。 StrComp 関数は、Variant 変数または文字列変数をブックマークと比較する場合、またはブックマークとブックマークを比較する場合に使用します。 StrComp 関数の 3 番目の引数は、値が 0 に設定されている必要があります。
注:
ブックマークは、ブックマークが表すレコードと一緒に保存されず、フォームが開いている間のみ有効です。 連結されたフォームを開くたびに、Microsoft Access によって再作成されます。
各ブックマークが一意の文字列変数で保存されている場合、保存できるブックマークの数に制限はありません。
Bookmark プロパティは、フォームのカレント レコードでのみ有効です。 カレント レコード以外のレコードのブックマークを保存するには、目的のレコードに移動してから、そのレコードを識別する文字列変数に Bookmark プロパティの値を代入します。
ブックマークは、Access のテーブルのみに基づいた任意の形式で使用できます。 ただし、Access 以外のデータベース製品ではブックマークがサポートされていないことがあります。 たとえば、主インデックスのないリンク テーブルを基に作成したフォームでは、ブックマークを使用することはできません。
フォームの再クエリを行うと、そのフォームのレコードに設定されたすべてのブックマークが無効になります。 ただし、[レコード] メニューの [更新] を選択しても、ブックマークには影響しません。
フォームを開いたときに、フォームのレコードセット内のレコードごとに一意のブックマークが作成されるため、2 つのレコードセットが同じテーブル、クエリ、または SQL ステートメントに基づく場合でも、フォームのブックマークは別のレコードセットでは機能しません。 たとえば、 "顧客" テーブルにバインドされたフォームを開くとします。 Visual Basic を使用して Customers テーブルを開き、ADO Seek メソッドまたは DAO Seek メソッドを使用してテーブル内の特定のレコードを検索する場合、フォームの Bookmark プロパティを現在のテーブル レコードに設定することはできません。 このような操作を実行するには、ADO の Find メソッドまたは DAO の Find メソッドをフォームの RecordsetClone プロパティと共に使用できます。
Bookmark プロパティを文字列の変数に設定し、レコードが削除された後にそのレコードを取得しようとすると、エラーが発生します。
Bookmark プロパティの値は、レコード番号と同一ではありません。
例
次の例を Northwind サンプル データベースでテストするには、"仕入先" フォームに "cmdFindContactName" という名前のコマンド ボタンを追加し、そのボタンの Click イベントに次のコードを追加する必要があります。 ボタンがクリックされると、ユーザーは検索する連絡先名の一部を入力するように求められます。 名前が見つかった場合、フォームの 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
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。