RecordsetのRecordsetCloneとBookmarkでレコードを移動するフォームを作成する|Access VBA入門

フォームに「先頭・前へ・次へ・最後」のボタンを追加し、RecordsetのRecordsetCloneとBookmarkでレコードの移動を行うVBAを作成します。

BackHome BackVBA入門


レコードの移動ボタンを追加したフォーム

顧客マスターのフォームを作成し、レコードの移動ボタンを追加しました。
ボタンは「先頭」「前へ」「次へ」「最後」の4個です。


クリックイベントのVBAを入力するには、デザイン画面でボタンを選択します。
プロパティのクリック時から[イベント プロシージャ]を選択し[…]ボタンをクリックします。


ボタン名_Click( )のプロシージャが表示されます。

最後ボタンのクリック イベント プロシージャです。


・レコードセット型の変数を宣言
・フォームのレコードソースからレコードセットを作成
・フォームのブックマークをレコードセットのブックマークに代入
・MoveLastで最終レコードに移動
・レコードセットのブックマークをフォームのブックマークに代入
・レコードセットの変数を開放します。

Private Sub 最後_Click()
    Dim rs As Recordset
    
    Set rs = Me.RecordsetClone
    rs.Bookmark = Me.Bookmark
    
    rs.MoveLast
    Me.Bookmark = rs.Bookmark
    
    Set rs = Nothing
End Sub

次へボタンのクリック イベント プロシージャです。


次のレコードに移動するには、MoveNextメソッドを使用します。
最終のレコード位置でMoveNextを行うと、エラーが発生します。
そのため、On Error GoToでエラー処理を追加しています。

Private Sub 次へ_Click()
    Dim rs As Recordset

On Error GoTo errsub
    Set rs = Me.RecordsetClone
    rs.Bookmark = Me.Bookmark
    
    rs.MoveNext
    Me.Bookmark = rs.Bookmark
    
    Set rs = Nothing
    Exit Sub

errsub:
    Beep
    Set rs = Nothing
End Sub

前へボタンのクリック イベント プロシージャです。


前のレコードに移動するには、MovePreviousメソッドを使用します。

Private Sub 前へ_Click()
    Dim rs As Recordset

On Error GoTo errsub
    Set rs = Me.RecordsetClone
    rs.Bookmark = Me.Bookmark
    
    rs.MovePrevious
    Me.Bookmark = rs.Bookmark
    
    Set rs = Nothing
    Exit Sub

errsub:
    Beep
    Set rs = Nothing
End Sub

先頭ボタンのクリック イベント プロシージャです。


Private Sub 先頭_Click()
    Dim rs As Recordset
    
    Set rs = Me.RecordsetClone
    rs.Bookmark = Me.Bookmark
    
    rs.MoveFirst
    Me.Bookmark = rs.Bookmark
    
    Set rs = Nothing
End Sub

BackHome BackVBA入門

Copyright(C) FeedSoft