今回もハマりました。
HTA を使って SQLServer のデータを操作する必要があって、
VBScript を使うことにしました。
接続には常套手段として、ADO(ActiveX Data Objects) を使います。
' ADOコネクションを生成
Set Cn = CreateObject("ADODB.Connection")
' DB接続情報
Cn.ConnectionString = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;User Id=sa;Password=xxxxx"
' 接続をOpen
Cn.Open
' ADOレコードセットを生成
Set RS = CreateObject("ADODB.Recordset")
' SQLを発行
RS.Open "select * from Table", Cn,adOpenForwardOnly,adLockReadOnly
ここで、緑字の adOpenForwardOnly は普通に通ります。
ところが、赤字の adLockReadOnly が通らないんです。
上記の例はどちらもデフォルトなので、省略できますから、書いたら通らないけど、省略したら通ります。
でも、レコードセットを編集したい場合は、これではできないので、どうしても、
RS.Open "select * from Table", Cn,adOpenKeyset,adLockOptimistic
にしたい。けど通らない。
さんざんいじくりまわした結果、
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4
という数字で指定すれば通りました。
RS.Open "select * from Table", Cn,adOpenKeyset,3