RecordsetのRecordsetCloneとBookmarkでレコードを移動するフォームを作成する|Access VBA入門
フォームに「先頭・前へ・次へ・最後」のボタンを追加し、RecordsetのRecordsetCloneとBookmarkでレコードの移動を行うVBAを作成します。
レコードの移動ボタンを追加したフォーム
顧客マスターのフォームを作成し、レコードの移動ボタンを追加しました。
ボタンは「先頭」「前へ」「次へ」「最後」の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