WSH  WSH2  掲示板  JavaScript,Neo-Generation  DOM  download  表紙
26. Folder  28.
Windows Scripting Host 27
ADO

AxtiveX Data Objects(ADO)はDAOよりフラットな構造に なっています。
    [Connection -] Recordset
以下、簡単に解説しますが、詳しいことは、
    Microsoft ActiveX Data Objects (ADO)
    ADO API Reference
をご覧ください。

基本的な例

基本的な使い方は、まず次のように Connection オブジェクトを得ます。
    var Conn = WScript.CreateObject("ADODB.Connection");
次に、データベースに接続します。
    Conn.Open(ConnectionString);
そして、SQL文やテーブル名を指定して Recordset オブジェクトを得ます。
    var rs = Conn.Execute(CommandText);
次に例を用意しました。
ここで使っているデータベースのソースは、 DAOのときと同じものです。
ここでは DSN を使っていないデータベースを扱っていますが、 DSN を使った例はそこら中にあるので適当に検索してください。
score.lzh(score.mdbをLHAで圧縮したもの 8kB)

scripts/score5.js
---------------------------------------------------------------------
var Conn = WScript.CreateObject("ADODB.Connection");
Conn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=score.mdb;");
var rs = Conn.Execute("SELECT Sum(算数) AS 総得点 FROM Score");
WScript.Echo(rs.Fields("総得点").Value);
rs.Close();
もっと簡単な例

実は、上に書いた構造にあるようにいきなり Recordsetオブジェクトを得ることができます。
    var rs = WScript.CreateObject("ADODB.Recordset");
そして、次のようにデータベースに接続してSQL文を発行してRecordsetを得ます。
    rs.Open(CommandText, ConnectionString);
引数は上と同じです。
scripts/score6.js
-------------------------------------------------------------------
var rs = WScript.CreateObject("ADODB.Recordset");
rs.Open("SELECT Sum(算数) AS 総得点 FROM Score",
        "Driver={Microsoft Access Driver (*.mdb)};Dbq=score.mdb;");
WScript.Echo(rs.Fields("総得点").Value);
rs.Close();
他のデータベースの例

ExcelはDAOでも書いたようにテーブル名を指定するところが 特徴的です。
scripts/score7.js
------------------------------------------------------------------
var rs = WScript.CreateObject("ADODB.Recordset");
rs.Open("SELECT Sum(算数) AS 総得点 FROM [Score$]",
        "Driver={Microsoft Excel Driver (*.xls)};Dbq=score.xls;");
WScript.Echo(rs.Fields("総得点").Value);
rs.Close();
テキストファイルは、パスにディレクトリを、テーブル名にファイルを指定します。
scripts/score8.js
---------------------------------------------------------------
var rs = WScript.CreateObject("ADODB.Recordset");
rs.Open("SELECT Sum(算数) AS 総得点 FROM score2.csv",
        "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=.");
WScript.Echo(rs.Fields("総得点").Value);
rs.Close();
ソースのscore2.csvは次の通りです。
scripts/score2.csv
---------------------------
名前,性,国語,算数,理科,社会
さくら,女,75,71,8,66
知世,女,62,2,89,60
小狼,男,51,28,70,31
千春,女,68,61,46,12
奈緒子,女,89,55,69,24
利佳,女,79,30,79,81
タイプライブラリ

WSH2.0以上ならタイプライブラリを参照することによって、 ADOの定数を使うことができます。 次の例は、テキストのデータベースにレコードを追加します。 ここでは、adOpenKeyset, adLockOptimistic, adCmdTableを使っています。
scripts/addnew.wsf
--------------------------------------------------------------
<JOB ID="exceltest">
 <REFERENCE GUID="{00000205-0000-0010-8000-00AA006D2EA4}"/>

  var rs = WScript.CreateObject("ADODB.Recordset");
  rs.Open("score2.csv",
        "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=.",
        adOpenKeyset, adLockOptimistic, adCmdTable);
  rs.AddNew();
  rs.Fields("名前").Value = "エリオル";
  rs.Fields("性").Value = "男";
  rs.Fields("国語").Value = 10;
  rs.Fields("算数").Value = 20;
  rs.Fields("理科").Value = 30;
  rs.Fields("社会").Value = 40;
  rs.Update();
  rs.Close();
 </SCRIPT>
</JOB>

first, prev, next, noframe, exit
Written 1/13/02