WSH: 2008年6月アーカイブ

以前に書いた記事「[WSH]VBSからAccessのアクションクエリを実行する方法 (ADO) 」では、アクセス側であらかじめ作っておいたアクションクエリをVBSから実行する方法を紹介しました。

VBSからアクションクエリを発行

今回は、VBSから直接SQLを発行してMDBファイルのデータを削除・更新・追加する方法を紹介します。
Option Explicit

Dim cn
Dim rs

Set cn= CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:¥ファイル名.mdb;"

rs.Open "DELETE FROM Table1", cn
rs.Open "INSERT INTO Table1 ( ID, Field1 ) " & _
"SELECT Table2.ID, Table2.Field1 FROM Table2;", cn

rs.Open "UPDATE Table1 SET Field1 = 'abc' WHERE Field1 = 'xyz' ", cn

cn.Close

Set rs = Nothing
Set cn = Nothing
MsgBox "完了しますた。"


注意事項

SQL文の中にダブルクォーテーション(")が入っているとうまく動きません。
文字列を表現したい場合はシングルクォーテーション(')で囲みましょう。


また、Access上で動作するSQL文でも、VBSから発行するとエラーになることがあります。
その場合は、標準SQL文に近い形で記述するとたいてい動きます。

WSHで動くJScriptでは、JavaScriptのpromptのような機能がありません。
なので、VBSのInputBoxを呼び出して使います。

以下のコードを拡張子.wsfで保存して実行する。

<job id="foo">
<script language="VBScript">
'InputBoxを出して、ユーザから入力された値を返す関数
function vbinput(msg)
vbinput = InputBox(msg)
end function
</script>

<script language="JavaScript">
//上で定義した関数を呼び出す
var name = vbinput("あなたの名前は?");
WScript.Echo(name);
</script>
</job>

このアーカイブについて

このページには、2008年6月以降に書かれたブログ記事のうちWSHカテゴリに属しているものが含まれています。

前のアーカイブはWSH: 2008年5月です。

次のアーカイブはWSH: 2009年1月です。

WSH: 2008年6月: 月別アーカイブ