himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

WSH から mdbファイル(MS Access database file)を作成する

VBScript の例は一杯あったけど、Javascript の例が少ないので書いてみた。
ネタ元:mdbファイルの作成 - Fioの素敵な日々

JavascriptWSH)の場合

var db = ActiveXObject("ADOX.Catalog");
db.create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=myFirst.mdb;"); 

実行結果(見やすいように改行入れて整形)

Provider=Microsoft.Jet.OLEDB.4.0;Password="";
User ID=Admin;
Data Source=myFirst.mdb;
Mode=Share Deny None;Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False

後始末を追加

var db = ActiveXObject("ADOX.Catalog");
db.create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=myFirst.mdb;");
db=null; 

パラメータを変数に入れて

var db = ActiveXObject("ADOX.Catalog");
var fileNameStr = myFirst.mdb;
var connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameStr +";";
db.create( connStr ); 
db=null; 

別の方法(もっと簡単)
ネタ元:5.4 新しいMDBファイルを作る

var oMDB = new ActiveXObject("Access.Application");
// MS Access を visible にして作業する場合、以下の行をコメントアウト
// oMDB.Visible = True;
oMDB.NewCurrentDatabase("test.mdb");    // database の作成 \<user name>\My Documents\test.mdb が作られる
…
oMDB.CloseCurrentDatabase();    // database を閉じる
oMDB = null;

このままだと、DB の中身を弄れないので DB オブジェクトも開く
ネタ元:5.5 DBオブジェクトを作成する

var oMDB = new ActiveXObject("Access.Application");
oMDB.OpenCurrentDatabase("test.mdb");    // database の作成 \<user name>\My Documents\test.mdb が作られる

var objDB = oMDB.CurrentDb();    // database object の作成
…
objDB.Close();  // database obejct の後始末
oMDB.CloseCurrentDatabase();    // database を閉じる
objDB = null;    // dispose
oMDB = null;     // dispose

テーブルまで作成するなら
ネタ元:VBScriptでMS-Accessファイル(mdb)生成|SHADOW RUN
注意)先に出てくるのは DAO の例、ADO は後ろの方。

script は後で(つーか普通に SQLコマンドで CREATE するだけなので、もしかしたらこのまま放置かも)。
※ 2010/06/03 補足:ADOX を使うのがミソ⇒CREATE