「その後Openメソッドで、引数に指定したデータベースへ接続を行います。
変数CNには、データベースへのコネクションが格納されます」
If CN.State = adStateClosed Then
CN.Provider = "Microsoft.ACE.OLEDB.12.0"
CN.Open ThisWorkbook.Path & "\" & "営業進捗データベース.accdb"
End If
DB接続 = True
その頃ミーティングスペースでは、八木くんが進捗状況の報告を兼ねて、
Accessデータベースとの連携について解説を行っています。
「…接続に成功すると"DB接続"プロシージャはTrueを返すので、
次にテーブルのレコードを取得します。
取得したレコードの集まりは、変数RSにレコードセットとして格納されます」
Sub データ取得()
Dim RS As New ADODB.Recordset
Dim SQL As String
Dim i As Long
If DB接続 Then
SQL = "SELECT * FROM 進捗TBL"
RS.Open SQL, CN
i = 2
Rows("2:" & Rows.Count).ClearContents
Do Until RS.EOF
Cells(i, 1).Value = RS.Fields("番号").Value
Cells(i, 2).Value = RS.Fields("案件").Value
Cells(i, 3).Value = RS.Fields("担当").Value
Cells(i, 4).Value = RS.Fields("進捗").Value
Cells(i, 5).Value = RS.Fields("企業名").Value
Cells(i, 6).Value = RS.Fields("備考").Value
Cells(i, 7).Value = RS.Fields("前回訪問日").Value
RS.MoveNext
i = i + 1
Loop
End If
End Sub
「レコードセットを取得するには、Openメソッドに、先ほどのコネクションの格納されたCNと、
SQL文字列というVBAとは別の言語の命令を指定します。
ここでは、"SELECT * FROM 進捗TBL"と、進捗TBLにある全てのレコードを
取得するように指定しています」