Я работаю с ADO VBScript, который должен принимать параметры и включать эти параметры в строку Query, которая передается базе данных. Я продолжаю получать ошибки, когда объект набора записей пытается открыть. Если я передаю запрос без параметров, откроется набор записей, и я смогу работать с данными. Когда я запускаю скрипт через отладчик, объект команды не показывает значение для объекта параметра. Мне кажется, что мне не хватает чего-то, что связывает объект Command и объект Parameter, но я не знаю, что. Вот несколько из VBScript Код:Как связать параметры для объектов Command в ADO с помощью VBScript?
...
'Open Text file to collect SQL query string'
Set fso = CreateObject("Scripting.FileSystemObject")
fileName = "C:\SQLFUN\Limits_ADO.sql"
Set tso = fso.OpenTextFile(fileName, FORREADING)
SQL = tso.ReadAll
'Create ADO instance'
connString = "DRIVER={SQL Server};SERVER=myserver;UID=MyName;PWD=notapassword; Database=favoriteDB"
Set connection = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
connection.Open connString
cmd.ActiveConnection = connection
cmd.CommandText = SQL
cmd.CommandType = adCmdText
Set paramTotals = cmd.CreateParameter
With paramTotals
.value = "tot%"
.Name = "Param1"
End With
'The error occurs on the next line'
Set recordset = cmd.Execute
If recordset.EOF then
WScript.Echo "No Data Returned"
Else
Do Until recordset.EOF
WScript.Echo recordset.Fields.Item(0) ' & vbTab & recordset.Fields.Item(1)
recordset.MoveNext
Loop
End If
SQL-строки, которые я использую довольно стандартный, за исключением Я хочу передать параметр к нему. Это примерно так:
SELECT column1
FROM table1
WHERE column1 IS LIKE ?
Я понимаю, что ADO должен заменить "?" с значением параметра, которое я присваиваю в скрипте. Проблема, которую я вижу, в том, что объект Parameter показывает правильное значение, но поле параметра объекта команды имеет значение null в соответствии с моим отладчиком.
Это сработало для меня --- спасибо! Читатели, пожалуйста, обратите внимание: аргумент 'Parameters' для' .Execute' принимает 'Variant'. Вы получите очень неясные сообщения об ошибках, если число и форматы ваших параметров не соответствуют ожидаемому запросу! – cxw