Tôi đã làm việc một VBScript ADO cần chấp nhận các tham số và kết hợp các tham số đó trong chuỗi truy vấn được chuyển qua cơ sở dữ liệu. Tôi tiếp tục gặp lỗi khi Record Set Object cố gắng mở. Nếu tôi chuyển một truy vấn không có tham số, recordset sẽ mở và tôi có thể làm việc với dữ liệu. Khi tôi chạy tập lệnh thông qua trình gỡ lỗi, đối tượng lệnh không hiển thị giá trị cho đối tượng tham số. Dường như với tôi rằng tôi đang thiếu một cái gì đó liên kết đối tượng Command và đối tượng Parameter, nhưng tôi không biết những gì. Dưới đây là một chút của Mã VBScript:Làm cách nào để liên kết Tham số với các đối tượng Lệnh trong ADO bằng 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
Chuỗi SQL mà tôi sử dụng là khá chuẩn, ngoại trừ tôi muốn chuyển tham số cho nó. Nó giống như sau:
SELECT column1
FROM table1
WHERE column1 IS LIKE ?
Tôi hiểu rằng ADO nên thay thế "?" với giá trị tham số tôi gán trong tập lệnh. Vấn đề tôi thấy là đối tượng Parameter cho thấy giá trị chính xác, nhưng trường tham số của đối tượng lệnh là null theo trình gỡ lỗi của tôi.
Điều này phù hợp với tôi --- cảm ơn! Người đọc xin lưu ý: đối số 'Tham số' cho' .Execute' nhận một 'Biến thể'. Bạn sẽ nhận được thông báo lỗi rất mơ hồ nếu số và định dạng của thông số của bạn không khớp với những gì truy vấn mong đợi! – cxw