オデッセイの運営サイト一覧

Excel®️、Accessのマクロ・VBAのスキルを評価する資格VBAエキスパート

企業・教育機関の皆さまへ 試験会場を探す お問い合せ

やってみよう!Excel VBAで業務改善!|持続可能なスキーム編

第6話「レコードセットとは」

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

一覧へ戻る

MENU