アクセス小僧:レコード番号とレコード数(3) [コンピューター]
アクセス小僧:レコード番号とレコード数(2)
http://cheese999.blog.so-net.ne.jp/2017-07-30
アクセス小僧:レコード番号とレコード数
http://cheese999.blog.so-net.ne.jp/2017-07-27-2
では、MsgBox、または、フォームに設置したテーブルと非連結なテキストボックスに
現在のレコード番号とレコード数を表示するマクロでした。
今回、テーブルにレコード番号とレコード数を表示するフィールドを作成し、そのフィールドに
連結したテキストボックスをフォームに設置し、再クエリ時に全レコード分、一括して
レコード番号とレコード数を更新するマクロを作りました。
Private Sub 再クエリ_Click()
'【機能】再クエリ
On Error GoTo ERR1
'【引数】
' なし
'【変数】
Dim db1 As DAO.Database ' データベース
Dim rs1 As DAO.Recordset ' レコードセット
Dim varBookMark As Variant ' ブックマーク
' 【コード】
' テーブルをレコードセットとして開く
Set db1 = CurrentDb()
Set rs1 = db1.OpenRecordset("T_テーブル名", dbOpenDynaset)
'レコードセットのブックマーク(再クエリ前のカレントレコード)を取得
varBookMark = rs1.Bookmark
'フォームを再クエリする
rs1.Requery
'先頭レコードへ
rs1.MoveFirst
'最終レコードへ
rs1.MoveLast
'先頭レコードへ
rs1.MoveFirst
'最終レコードまで繰り返し
Do Until rs1.EOF
rs1.Edit ' 編集
rs1!F_Record_No1 = (rs1.AbsolutePosition + 1) & "/" & rs1.RecordCount
rs1.Update ' 更新
rs1.MoveNext
Loop
'カレントレコードを保存されているブックマークに設定
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
・テーブルに設置した、レコード番号とレコード数を表示するフィールドは、F_Record_No1です。
・レコード番号は、(rs1.AbsolutePosition + 1) で計算しています。
・レコード数は、rs1.RecordCountです。
(PS 2017/08/12 20:12) このマクロを実行して更新されるのは、テーブルであって、フォームではない、ということが分かりました。フォームも同時に更新するためには、フォームも再クエリ(Requery) する必要があると分かりました。その話は別途、記事にします。
http://cheese999.blog.so-net.ne.jp/2017-07-30
アクセス小僧:レコード番号とレコード数
http://cheese999.blog.so-net.ne.jp/2017-07-27-2
では、MsgBox、または、フォームに設置したテーブルと非連結なテキストボックスに
現在のレコード番号とレコード数を表示するマクロでした。
今回、テーブルにレコード番号とレコード数を表示するフィールドを作成し、そのフィールドに
連結したテキストボックスをフォームに設置し、再クエリ時に全レコード分、一括して
レコード番号とレコード数を更新するマクロを作りました。
Private Sub 再クエリ_Click()
'【機能】再クエリ
On Error GoTo ERR1
'【引数】
' なし
'【変数】
Dim db1 As DAO.Database ' データベース
Dim rs1 As DAO.Recordset ' レコードセット
Dim varBookMark As Variant ' ブックマーク
' 【コード】
' テーブルをレコードセットとして開く
Set db1 = CurrentDb()
Set rs1 = db1.OpenRecordset("T_テーブル名", dbOpenDynaset)
'レコードセットのブックマーク(再クエリ前のカレントレコード)を取得
varBookMark = rs1.Bookmark
'フォームを再クエリする
rs1.Requery
'先頭レコードへ
rs1.MoveFirst
'最終レコードへ
rs1.MoveLast
'先頭レコードへ
rs1.MoveFirst
'最終レコードまで繰り返し
Do Until rs1.EOF
rs1.Edit ' 編集
rs1!F_Record_No1 = (rs1.AbsolutePosition + 1) & "/" & rs1.RecordCount
rs1.Update ' 更新
rs1.MoveNext
Loop
'カレントレコードを保存されているブックマークに設定
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
・テーブルに設置した、レコード番号とレコード数を表示するフィールドは、F_Record_No1です。
・レコード番号は、(rs1.AbsolutePosition + 1) で計算しています。
・レコード数は、rs1.RecordCountです。
(PS 2017/08/12 20:12) このマクロを実行して更新されるのは、テーブルであって、フォームではない、ということが分かりました。フォームも同時に更新するためには、フォームも再クエリ(Requery) する必要があると分かりました。その話は別途、記事にします。
ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-08-12 20:07)
PSを追記しました(^_0)ノ
by cheese999 (2017-08-12 20:18)