スポンサーリンク

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を使う

2016年11月28日月曜日

DAOで全レコードの全フィールドデータを動的配列に格納するVBA

Access2013のDAOで、全レコードの全フィールドデータを動的配列に格納するVBAです。

下記フォームの[開始]ボタンをクリックすると実行します。

クリックイベント内に入力した、VBAコードです。

■VBAコードの流れ


1)レコードセットと配列を宣言
2)テーブルをレコードセットで開きます。
3)動的配列にフィールド数分の要素を確保します。
4)レコード数分、Doループで繰り返します。
5)フィールド数文、Forループで繰り返します。
6)配列にフィールドデータを格納します。
7)次のレコードに移動し、LoopでDoへ戻ります。
8)レコードセットの変数を開放します。

■VBAコード


Option Compare Database
Private Sub コマンド0_Click()
    Dim rs As Recordset
    Dim myArray() As Variant
   
    Set rs = CurrentDb.OpenRecordset("T_テーブル")
    ReDim myArray(rs.Fields.Count)
   
    Do Until rs.EOF
        For i = 0 To rs.Fields.Count - 1
            myArray(i) = rs(i)
        Next
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

関連する記事
VBAでフォームを開くコードとエラー発生時の対処方法
VBAでフォームを閉じるボタンを作成する