Контекст: Windows7, VBScript, ADODB и ADOX.
Я написал некоторый код VBScript, который создает базу данных, создает три таблицы, загружает в одну из них данные и затем пытается выполнить набор операторов SQLс этими таблицами.
Все работает отлично, за исключением последнего шага: операторы SQL, когда принимаются в собственный построитель запросов Access, работают нормально.Похоже, они не работают за пределами Access, и нет сообщений об ошибках.Операторы SQL отображаются и, очевидно, выполняются, но содержимое базы данных доступа не изменяется.Я в недоумении, чтобы понять, почему.
Const dbFile = "C:\database.mdb"
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read|Write;Data Source=" & dbFile
...
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adDouble = 5
Const adInteger = 3
Const adCmdText = 1
Const adLockOptimistic = 3
Const adOpenDynamic = 2
Const adCmdTable = &H0002
Const adUseClient = 3
...
Set objConn = CreateObject("ADODB.Connection")
objConn.CursorLocation = adUseClient
objConn.Open strDSN
Set objCmd = CreateObject("ADODB.Command")
Set o = createobject("Std.Ini2")
o.Load "C:\Queries.ini"
d = o.GetValue("Setup", "Queries", vbNullString)
a = Split( d, ", ")
For Each s In a
cmd = o.GetValue(s,"Query",vbNullString)
WScript.Echo cmd
With objCmd
Set .ActiveConnection = objConn
.CommandText = cmd
.CommandType = adCmdText
.CommandTimeout = 60
.Prepared = True
.Execute
End With
Next
Std.Ini2 - это один из моих собственных инструментов, который обращается к файлу INI.
Ниже приведен пример фрагмента INI:
[Qry-01b-Delete Products from Extg product-import]
Query=DELETE [Product-import].* FROM [Product-import];
[Qry-02-Append Feed To Product-import]
Query=INSERT INTO [Product-import] ( product_sku, product_name, product_price ) SELECT Feed.Col1, Feed.Col2, Feed.Col3 FROM Feed;
[Qry-03a-Delete All Records From Exisiting Category Path Builder]
Query=DELETE [Tbl_Category Path builder].* FROM [Tbl_Category Path builder];
[Qry-03b-Append Products to Category Builder]
Query=INSERT INTO [Tbl_Category Path builder] ( SKU, Product ) SELECT Feed.Col1, Feed.Col2 FROM Feed;
три таблицы, как вы уже, возможно, называли «Feed», «Product-import» и «Tbl_Category Path Builder».