次の方法で共有


Form.Bookmark プロパティ (Access)

フォームの基になるテーブル、クエリ、または SQL ステートメント内の特定のレコードを一意に識別するブックマークを設定するには、フォームで Bookmark プロパティを使用します。 値の取得と設定が可能なバリアント型 (Variant) の値です。

構文

ブックマーク

expressionForm オブジェクトを表す変数です。

注釈

注:

基になるテーブルまたはクエリの ADO の Bookmark プロパティまたは DAO の Bookmark プロパティから、フォームの Bookmark プロパティを個別に取得または設定することができます。

フォーム ビューで連結フォームを開くと、各レコードに固有のブックマークが与えられます。 カレント レコードのブックマークは、Visual Basic でフォームの Bookmark プロパティの値を文字列変数に代入することによって保存できます。 他のレコードに移動した後でも、この変数をフォームの Bookmark プロパティに指定すると、ブックマークを保存したレコードに戻ることができます。 StrComp 関数を使用して、Variant 変数または文字列変数をブックマークと比較するか、ブックマークとブックマークを比較する場合に使用します。 StrComp 関数の 3 番目の引数は、値が 0 に設定されている必要があります。

注:

ブックマークは、それらが表すレコードと共に保存されず、フォームが開いている間にのみ有効です。 バインドされたフォームが開かれるたびに、Microsoft Access によって再作成されます。

それぞれが一意の文字列変数で保存されている場合に保存できるブックマークの数に制限はありません。

Bookmark プロパティは、フォームのカレント レコードでのみ有効です。 カレント レコード以外のレコードのブックマークを保存するには、目的のレコードに移動してから、そのレコードを識別する文字列変数に Bookmark プロパティの値を代入します。

Access テーブルに完全に基づく任意のフォームでブックマークを使用します。 ただし、Access 以外のデータベース製品ではブックマークがサポートされていないことがあります。 たとえば、主インデックスのないリンク テーブルを基に作成したフォームでは、ブックマークを使用することはできません。

フォームの再クエリを行うと、そのフォームのレコードに設定されたすべてのブックマークが無効になります。 ただし、[レコード] メニューの [更新] を選択しても、ブックマークには影響しません。

Access では、フォームが開かれると、フォームのレコードセットごとに一意のブックマークが作成されるため、2 つのレコードセットが同じテーブル、クエリ、または SQL ステートメントに基づいている場合でも、フォームのブックマークは別のレコードセットでは機能しません。 たとえば、 Customers テーブルにバインドされたフォームを開くとします。 Visual Basic を使用して Customers テーブルを開き、ADO Seek メソッドまたは DAO Seek メソッドを使用してテーブル内の特定のレコードを検索する場合、フォームの Bookmark プロパティを現在のテーブル レコードに設定することはできません。 この種の操作を実行するには、フォームの RecordsetClone プロパティで ADO Find メソッドまたは DAO Find メソッドを使用できます。

Bookmark プロパティを文字列の変数に設定し、レコードが削除された後にそのレコードを取得しようとすると、エラーが発生します。

Bookmark プロパティの値は、レコード番号と同一ではありません。

Northwind サンプル データベースで次の例をテストするには、 cmdFindContactName という名前のコマンド ボタンを Suppliers フォームに追加し、ボタンの 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 のサポートおよびフィードバックを参照してください。