アクセス小僧:再クエリ後、再クエリ前のカレントレコードを表示 [コンピューター]
アクセスのフォームにおいて、
再クエリ後、再クエリ前のカレントレコードを表示するマクロを作りました。
アクセスのフォームにおいて、再クエリ(Requery)を行うと、1番目のレコードに移動してしまうため、ブックマークで再クエリ前のカレントレコードを覚えておき、再クエリ後、再クエリ前のカレントレコードに移動します。
【参考】
http://fk-plaza.jp/acs/TIPS/waza45.htm
http://tsware.jp/tips/tips_163.htm
⇒上記のWebで紹介されていたマクロでは、うまく動かなかったので、下記のようなマクロになりました。
【マクロ】
Private Sub Sample_Click()
'【機能】保存して更新
On Error GoTo ERR1
'【引数】
' なし
'【変数】
Dim db1 As DAO.Database ' データベース
Dim rs1 As DAO.Recordset ' レコードセット
Dim varBookmark As Variant ' ブックマーク
' 【コード】
' ABCテーブルをレコードセットとして開く
Set db1 = CurrentDb()
Set rs1 = db1.OpenRecordset("T_ABC", dbOpenDynaset)
'レコードセットのブックマーク(再クエリ前のカレントレコード)を取得
varBookmark = rs1.Bookmark
'フォームを再クエリする
rs1.Requery
'カレントレコードを保存されているブックマークに設定
rs1.Bookmark = varBookmark
'レコードセット、データベース変数の解放
Set rs1 = Nothing
Set db1 = Nothing
'Subを抜ける
Exit Sub
ERR1:
MsgBox ("エラー" & vbCrLf & Err.Description)
'レコードセット、データベース変数の解放
Set rs1 = Nothing
Set db1 = Nothing
End Sub
再クエリ後、再クエリ前のカレントレコードを表示するマクロを作りました。
アクセスのフォームにおいて、再クエリ(Requery)を行うと、1番目のレコードに移動してしまうため、ブックマークで再クエリ前のカレントレコードを覚えておき、再クエリ後、再クエリ前のカレントレコードに移動します。
【参考】
http://fk-plaza.jp/acs/TIPS/waza45.htm
http://tsware.jp/tips/tips_163.htm
⇒上記のWebで紹介されていたマクロでは、うまく動かなかったので、下記のようなマクロになりました。
【マクロ】
Private Sub Sample_Click()
'【機能】保存して更新
On Error GoTo ERR1
'【引数】
' なし
'【変数】
Dim db1 As DAO.Database ' データベース
Dim rs1 As DAO.Recordset ' レコードセット
Dim varBookmark As Variant ' ブックマーク
' 【コード】
' ABCテーブルをレコードセットとして開く
Set db1 = CurrentDb()
Set rs1 = db1.OpenRecordset("T_ABC", dbOpenDynaset)
'レコードセットのブックマーク(再クエリ前のカレントレコード)を取得
varBookmark = rs1.Bookmark
'フォームを再クエリする
rs1.Requery
'カレントレコードを保存されているブックマークに設定
rs1.Bookmark = varBookmark
'レコードセット、データベース変数の解放
Set rs1 = Nothing
Set db1 = Nothing
'Subを抜ける
Exit Sub
ERR1:
MsgBox ("エラー" & vbCrLf & Err.Description)
'レコードセット、データベース変数の解放
Set rs1 = Nothing
Set db1 = Nothing
End Sub
ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-07-15 05:53)