HOME > 即効テクニック > AccessVBA > データ操作 > ブックマークでレコードの位置を操作する

即効テクニック

データ操作

ブックマークでレコードの位置を操作する

(Access 2000/2002/2003)
●概要●
構文  expression.Bookmark		取得/設定

設定項目        内容
expression	Recordsetオブジェクトを指定[省略不可]

カレントレコードのブックマークを設定または取得します。
ブックマークとは、Recordset内の各レコードを識別するため一意な値です。Recordsetオブジェクトを作成した時点で、各レコードは固有のブックマークを持っています。あるレコードのBookmarkプロパティ値を変数に取得してからレコードを移動すると、後からブックマークを頼りに、そのレコードに戻ることができます。
次のコードは、インプットダイアログで入力した商品NOのレコードを検索するものです。該当する商品が見つかれば商品名を表示します。見つからなければ、保存しておいたブックマークを利用して元のレコードをカレントレコードにします。

●設定●
動作確認をするためには、Visual Basic Editorのメニューから[ツール]→[参照設定]コマンドを選択し、[参照設定]ダイアログボックスで「Microsoft DAO 3.6 Object Library」にチェックを入れてください。

●サンプル●
Sub BookmarkSample()
    Dim myRS As DAO.Recordset
    Dim myBM As Variant
    Dim myStr As String
    '[商品テーブル]をテーブルタイプのレコードセットとして開く
    Set myRS = CurrentDb.OpenRecordset("商品テーブル", dbOpenTable)
    '現在のブックマークを保存
    myBM = myRS.Bookmark
    '現在のレコードを表示
    MsgBox "現在のレコード:" & myRS!商品NO
    'インデックスの設定
    myRS.Index = "PrimaryKey"
    '検索条件の入力
    myStr = InputBox("商品NOを入力してください")
    '検出
    myRS.Seek "=", myStr
    '見つからなかった場合
    If myRS.NoMatch Then
         '元の位置に戻す
        myRS.Bookmark = myBM
        MsgBox "見つかりませんでした" & vbCr & _
               "現在のレコード:" & myRS!商品NO
               '見つかった場合
               Else 
        MsgBox "見つかりました" & vbCr & _
               "現在のレコード:" & myRS!商品NO & "  " & myRS!商品名
    End If
    myRS.Close
End Sub