5.6 SQLの実行/SELECT
 MDBファイルにあるテーブルを使う場合で、SELECT文を実行したいときの方法です。SELECT文を実行するときは、データベースオブジェクトのOpenRecordsetというメソッドで行います。

 そして、このメソッドを実行するとレコードセットオブジェクトという物が作成され、そこからレコードやフィールドを取り出します。
使用例
 OpenRecordsetの使い方です。例では、開いたMDBファイルの住所録テーブルというテーブルから、SELECT文でデータを取り出し、取り出したデータ全てを表示しています。ちなみに、テーブルのレイアウトはAccessネタで使った住所録テーブルと同じです。詳しくは、Accessネタ住所録を作ってみようの2.住所録テーブルの作成を参照してください。

 SELECT文を実行しているのは@の部分です。OpenRecordsetメソッドのパラメタにSQL文を指定します。実行した結果は、レコードセットオブジェクトとしてobjRSに入ります。そこから、フィールドの値を取得したいときは、レコードセットオブジェクト("フィールド名")で取得できます。例では、objRS("漢字氏名")objRS("性別")と書いてある所(B)がそれです。

 それと、次のレコードへカーソルを移動する(次のレコードを読む)には、MoveNextというメソッドを実行(C)すればOK!データが底まで行ったかを調べるには、レコードセットオブジェクトのEofというプロパティで判断します。Trueが底に達したという意味で、ループの終了条件(A)にもなっています。そして、レコードセットも使い終わったらCloseメソッドで閉じて(D)あげましょう。

 ちなみに、Accessを終了する方法は5.11 Accessを終了するを見てくださいね。

Option Explicit

Dim objAccess
Dim objDB
Dim objRS
Dim i

'Accessオブジェクトを作成します
Set objAccess = CreateObject("Access.Application")

'Access画面を表示します
objAccess.Visible = True

'既存のMDBファイルを開きます
objAccess.OpenCurrentDatabase("c:\happy\island.mdb")

'DBオブジェクトを作ります
Set objDB = objAccess.CurrentDb

'@SQLを実行します
Set objRS = objDB.OpenRecordset("select * from 住所録テーブル")

'ASQLの実行結果をデータが無くなるまで表示します
Do Until objRS.Eof = True

    'Bフィールド値の表示
    WScript.echo "漢字氏名:" & objRS("漢字氏名") & " 性別:" & objRS("性別")

    'Cカーソルを次の行へ
    objRS.MoveNext

Loop

'Dレコードセットをクローズします
objRS.Close

'データベースをクローズします
objDB.Close

'MDBファイルを閉じます
objAccess.CloseCurrentDatabase

'各種オブジェクトの破棄
Set objRS = Nothing
Set objDB = Nothing
Set objAccess = Nothing
 ※例では、Accessの画面をわざと表示しています
Copyright(C) 1999-2006 結城圭介。 All rights reserved