Ho lavorato a un VBScript ADO che deve accettare i parametri e incorporare tali parametri nella stringa di query che viene passata al database. Continuo a ricevere errori quando l'oggetto Record Set tenta di aprirsi. Se passo una query senza parametri, si apre il recordset e posso lavorare con i dati. Quando eseguo lo script tramite un debugger, l'oggetto comando non mostra un valore per l'oggetto parametro. Mi sembra che mi manca qualcosa che associa l'oggetto Command e l'oggetto Parameter, ma non so cosa. Ecco un po 'di codice VBScript:Come associo i parametri agli oggetti Command in ADO con 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
La stringa SQL che uso è abbastanza standard, tranne che voglio passare un parametro ad esso. E 'qualcosa di simile: "?"
SELECT column1
FROM table1
WHERE column1 IS LIKE ?
Capisco che ADO dovrebbe sostituire la con il valore del parametro che assegno nello script. Il problema che sto vedendo è che l'oggetto Parameter mostra il valore corretto, ma il campo del parametro dell'oggetto comando è nullo secondo il mio debugger.
Questo ha funzionato per me --- grazie! I lettori notano che l'argomento 'Parameters' su' .Execute' richiede un 'Variant'. Riceverai messaggi di errore molto oscuri se il numero e i formati dei tuoi parametri non corrispondono a quelli che la query si aspetta! – cxw