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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage