トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 持続可能なスキーム編: 第6話「レコードセットとは」3/4 :八木くんの解説

やってみよう!Excel VBAで業務改善! 持続可能なスキーム編|第6話 「レコードセットとは」

八木くんの解説

「その後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にある全てのレコードを
取得するように指定しています」

一覧にもどる