スポンサーリンク

2016年12月8日木曜日

DAOで全レコードのフィールドデータを動的に設定した二次元配列し格納するVBA

Access2013でDAOを使用し、全レコードのフィールドデータを、動的に設定した二次元配列し格納するVBAです。

取出し元の、顧客先名簿テーブルです。
このテーブルから、担当者名と住所を格納します。
顧客先名簿テーブル

ボタンをクリックすると、VBAを開始するフォームを作成しました。
VBAを開始するフォーム

作成したVBAコードです。

Dim rs As Recordset : レコードセットを宣言
Dim myArray() As Variant : 配列を宣言

Set rs = CurrentDb.OpenRecordset("T_納品先名簿") : テーブルを開きます
ReDim myArray(rs.RecordCount - 1, 1) : 動的に二次元配列を設定

Do Until rs.EOF : レコード終了までループします
myArray(i, 0) = rs(1) : 担当者名を配列に格納
myArray(i, 1) = rs(3) : 住所を配列に格納

rs.MoveNext : 次のレコードへ移動

作成したVBAコード

Option Compare Database

Private Sub コマンド0_Click()
    Dim rs As Recordset
    Dim myArray() As Variant
    Dim i As Long
   
    Set rs = CurrentDb.OpenRecordset("T_納品先名簿")
    ReDim myArray(rs.RecordCount - 1, 1)
    i = 0
   
    Do Until rs.EOF
        myArray(i, 0) = rs(1)
        myArray(i, 1) = rs(3)
        i = i + 1
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

動的配列にフィールドデータを格納した結果を、ウォッチ式で見た画面です。
ウォッチ式で見た画面
関連する記事
DAOで全レコードの全フィールドデータを動的配列に格納するVBA
ADOを使う