8.3 データの読み込み
 SELECT文を実行し結果を取得したいときの方法です。SELECT文などのSQLを実行するときは、ADOオブジェクトのExecuteというメソッドで行います。

 そして、このメソッドを実行するとレコードセットオブジェクトという物が作成され、そこからレコードやフィールドを取り出します。基本的には、ココのネタ(Accessのところ)にある『5.6 SQLを実行する1』や『6.4 SQLの実行/SELECT』と同じです。
使用例/エクセルワークブックの場合
 SELECT文を使い、エクセルワークブックのデータを取得するときの方法です。例では、c:\happy\ADO_EXCEL.xlsというエクセルワークブックをADOを使い読み込みモードで開き、SELECT文でデータを取得したデータを全て表示しています。ちなみに、使っているワークブックの内容は『8.1 エクセルやCSVを使う』に出ているサンプルCSVファイルの内容と同じです。

 なお、Executeメソッドやレコードセットオブジェクトなどについては、ココのネタ(Accessのところ)にある『5.6 SQLを実行する1』と同じなので、そちらを参照してください。

 それと、SELECT文でも何らかの原因でSQLエラーが出ることがあります。エラー情報の取得については『6.5 SQLの実行2』をどうぞ。

 ■VBScriptでの記述例
Option Explicit

Dim objADO
Dim objRS

'ADOオブジェクトを作成します
Set objADO = CreateObject("ADODB.Connection")

'ADOを使いエクセルワークブックを読み込みモードでオープンします
objADO.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=c:\happy\ADO_EXCEL.xls;" & _
            "ReadOnly=1"

'SQLを実行し、店舗コードがT5144のデータを抽出します
Set objRS = objADO.Execute("select * from U_TBL where 店舗コード='T5144'")

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

    'フィールド値の表示
    WScript.echo "店舗コード:" & objRS("店舗コード") & " 価格:" & objRS("価格")

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

Loop

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

'ADOオブジェクトをクローズします
objADO.Close

'オブジェクトの破棄
Set objADO = Nothing

 ■JScript(JavaScript)での記述例
//ADOオブジェクトを作成します
var objADO = new ActiveXObject("ADODB.Connection");

//ADOを使いエクセルワークブックを読み込みモードでオープンします
objADO.Open("Driver={Microsoft Excel Driver (*.xls)};" +
            "DBQ=c:\\happy\\ADO_EXCEL.xls;" +
            "ReadOnly=1");

//SQLを実行し、店舗コードがT5144のデータを抽出します
var objRS = objADO.Execute("select * from U_TBL where 店舗コード=\'T5144\'");

//SQLの実行結果をデータが無くなるまで表示します
do {

    //フィールド値の表示
    WScript.echo("店舗コード:" + objRS("店舗コード") + " 価格:" + objRS("価格"));

    //カーソルを次の行へ
    objRS.MoveNext();

} while(objRS.Eof==false);

//レコードセットをクローズします
objRS.Close();

//ADOオブジェクトをクローズします
objADO.Close();

//オブジェクトの破棄
objRS = null;
objADO = null;
使用例/CSVファイルの場合
 同じように、CSVファイルからデータを取得するときの方法です。違いは、オープンの方法と、SELECT文の所でCSVファイル名を指定しているところです。

 例では、c:\happyというフォルダをADOを使い読み込みモードで開き、その中に入っているADO_EXCEL.csvというCSVファイルに入っているデータをSELECT文で取得し、取得したデータを全て表示しています。ちなみに、使っているCSVファイルは『8.1 エクセルやCSVを使う』に出ているサンプルCSVファイルです。

 ■VBScriptでの記述例
Option Explicit

Dim objADO
Dim objRS

'ADOオブジェクトを作成します
Set objADO = CreateObject("ADODB.Connection")

'ADOを使いCSVファイルを扱う準備(オープン)を行います
objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
            "DBQ=c:\happy;" & _
            "ReadOnly=1"

'SQLを実行し、店舗コードがT5144のデータを抽出します
Set objRS = objADO.Execute("select * from ADO_EXCEL.csv where 店舗コード='T5144'")

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

    'フィールド値の表示
    WScript.echo "店舗コード:" & objRS("店舗コード") & " 価格:" & objRS("価格")

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

Loop

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

'ADOオブジェクトをクローズします
objADO.Close

'オブジェクトの破棄
Set objRS = Nothing
Set objADO = Nothing

 ■JScript(JavaScript)での記述例
//ADOオブジェクトを作成します
var objADO = new ActiveXObject("ADODB.Connection");

//ADOを使いCSVファイルを扱う準備(オープン)を行います
objADO.Open("Driver={Microsoft Text Driver (*.txt; *.csv)};" +
            "DBQ=c:\\happy;" +
            "ReadOnly=1");

//SQLを実行し、店舗コードがT5144のデータを抽出します
var objRS = objADO.Execute("select * from ADO_EXCEL.csv where 店舗コード=\'T5144\'");

//SQLの実行結果をデータが無くなるまで表示します
do {

    //フィールド値の表示
    WScript.echo("店舗コード:" + objRS("店舗コード") + " 価格:" + objRS("価格"));

    //カーソルを次の行へ
    objRS.MoveNext();

} while(objRS.Eof==false);

//レコードセットをクローズします
objRS.Close();

//ADOオブジェクトをクローズします
objADO.Close();

//オブジェクトの破棄
objRS = null;
objADO = null;
Copyright(C) 1999-2006 結城圭介。 All rights reserved