Wie ordne ich Parameter Befehlsobjekten in ADO mit VBScript zu?
Ich habe ein ADO-VBScript erstellt, das Parameter akzeptieren und diese Parameter in die Abfragezeichenfolge integrieren muss, die an die Datenbank übergeben wird. Ich erhalte immer wieder Fehler, wenn das Datensatzobjekt versucht, sich zu öffnen. Wenn ich eine Abfrage ohne Parameter übergebe, wird das Recordset geöffnet und ich kann mit den Daten arbeiten. Wenn ich das Skript über einen Debugger ausführe, zeigt das Befehlsobjekt keinen Wert für das Parameterobjekt an. Es scheint mir, dass mir etwas fehlt, das das Befehlsobjekt und das Parameterobjekt verbindet, aber ich weiß nicht, was. Hier ist ein Teil des VBScript-Codes:
...
'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
Die von mir verwendete SQL-Zeichenfolge ist ziemlich normal, mit der Ausnahme, dass ich einen Parameter übergeben möchte. Es ist ungefähr so:
SELECT column1
FROM table1
WHERE column1 IS LIKE ?
Ich verstehe, dass ADO das "?" mit dem parameterwert weise ich im script zu. Das Problem, das ich sehe, ist, dass das Parameter-Objekt den richtigen Wert anzeigt, aber das Parameterfeld des Befehlsobjekts ist laut meinem Debugger null.