Access2013のVBAで、テーブルのレコード総数を取得し、全レコードを読み取ります。
下は読み取り元の顧客名簿テーブルです。[開く]ボタンとレコードデータを表示するテキストボックスを配置した、下のフォームを作成しました。
VBAコードを入力します。
≪主なコードの説明≫
Dim rs As Recordset : レコードセットを宣言します。Set rs = CurrentDb.OpenRecordset("T_社員名簿") : テーブルを開きます。
lrec = rs.RecordCount : レコード総数を取得します。
Me!テキスト1 = Null : テキストボックスを空白にします。
For i = 1 To lrec : レコード数だけループします。
Me!テキスト1 = Me!テキスト1 & rs(1) & vbCrLf : vbCrLfで改行します。
rs.MoveNext : 次のレコードへ移動します。
Set rs = Nothing : レコードセットを開放します・
フィールド順に取り出すには、1番目が rs(0) のように0から始まります。
≪実行コード≫
Option Compare DatabasePrivate Sub コマンド0_Click()
Dim rs As Recordset
Dim i As Long
Dim lrec As Long
Set rs = CurrentDb.OpenRecordset("T_社員名簿")
lrec = rs.RecordCount
Me!テキスト1 = Null
For i = 1 To lrec
Me!テキスト1 = Me!テキスト1 & rs(0) & " : "
Me!テキスト1 = Me!テキスト1 & rs(1) & vbCrLf
rs.MoveNext
Next
Set rs = Nothing
End Sub
≪実行結果≫
実行結果のフォームです。全レコードの[ID]と[社員名]のデータが表示できました。
≪他のデータベースファイルを開くには≫
下のコードのように、CurrentDbではなくDatabaseオブジェクトを宣言し、他のデータベースファイルを指定します。Application.CurrentProject.Pathで自分自身が存在するフォルダを取得しています。
Private Sub コマンド0_Click()
Dim db As Database
Dim rs As Recordset
Dim i As Long
Dim lrec As Long
Dim sPath As String
sPath = Application.CurrentProject.Path
If Right(sPath, 1) <> "\" Then
sPath = sPath & "\"
End If
Set db = OpenDatabase(sPath & "商品管理.accdb")
Set rs = db.OpenRecordset("T_商品マスター")
lrec = rs.RecordCount
Me!テキスト1 = Null
For i = 1 To lrec
Me!テキスト1 = Me!テキスト1 & rs(0) & " : "
Me!テキスト1 = Me!テキスト1 & rs(2) & vbCrLf
rs.MoveNext
Next
Set rs = Nothing
End Sub
≪他のデータベースファイルから読み取った結果≫
全レコードの[商品ID]と[商品名]のデータが表示できました。DAOで全レコードの全フィールドデータを動的配列に格納するVBA
DAOで全レコードのフィールドデータを動的に設定した二次元配列し格納するVBA