您好腳本編程人員來自全國各地,我目前工作的一個VBScript來從一個Excel工作表拉查詢參數和SQL服務器(Sybase ASE的)上運行一個查詢的每一行在Excel表格中。運行從Excel工作表中多個查詢在VBScript
目前我有成功拉動參數並運行第一行的代碼,但是當我開始下一行時,由於「缺少對象」而導致查詢失敗,但我已經試圖保持打開ADO連接並且將查詢重新運行到記錄集中,以及爲Excel表中的每一行重新創建連接並運行記錄集。我的代碼當前如下:
Dim MyConnection, MyRecordSet, MyExcel, MyExcelBook, MyExcelSheet
Dim ConnectionString, Parameter1, Parameter2, SQL, I
ConnectionString = "Driver=ODBC Driver;UserID=Admin;Password=Pass;"
Set MyExcel = CreateObject("Excel.Application")
Set MyExcelBook = MyExcel.Workbooks.Open("C:/Test.xls")
Set MyExcelSheet = MyExcelBook.WorkSheets(2)
Set MyConnection = CreateObject("ADODB.Connection")
Set MyRecordSet = CreateObject("ADODB.RecordSet")
MyConnection.Open ConnectionString
I = 2
Do while MyExcelSheet.Cells(I,2).Value <> ""
Parameter1 = MyExcelSheet.Cells(I,6).Value
Parameter2 = MyExcelSheet.Cells(I,7).Value
SQL = "Select * From Table Where Type=" & Parameter1 & " AND Color=" & Parameter2 & ";"
MyRecordSet.Open SQL, MyConnection
'Save RecordSet to another Excel sheet'
MyRecordSet.Close
I = I + 1
loop
MyConnection.Close
Set MyConnection = Nothing
有什麼辦法沒有運行到所需
錯誤
對象運行在同一個連接到數據庫上的另一個查詢?
在suggested changes之後編輯,仍然有相同的錯誤。
Dim MyConnection, MyExcel, MyExcelBook, MyExcelSheet Dim ConnectionString, Parameter1, Parameter2, SQL, I ConnectionString = "Driver=ODBC Driver;UserID=Admin;Password=Pass;" Set MyExcel = CreateObject("Excel.Application") Set MyExcelBook = MyExcel.Workbooks.Open("C:/Test.xls") Set MyExcelSheet = MyExcelBook.WorkSheets(2) Set MyConnection = CreateObject("ADODB.Connection") MyConnection.Open ConnectionString I = 2 Do while MyExcelSheet.Cells(I,2).Value <> "" Parameter1 = MyExcelSheet.Cells(I,6).Value Parameter2 = MyExcelSheet.Cells(I,7).Value SQL = "Select * From Table Where Type=" & Parameter1 & " AND Color=" & Parameter2 & ";" Dim MyRecordSet Set MyRecordSet = CreateObject("ADODB.RecordSet") MyRecordSet.Open SQL, MyConnection 'Save RecordSet to another Excel sheet' MyRecordSet.Close I = I + 1 loop MyConnection.Close Set MyConnection = Nothing
你是否檢查'SQL'變量包含在循環的連續迭代預期的查詢?使用'WScript.Echo SQL'即可查看每個查詢中包含,我大膽猜測的問題是從Excel傳遞的參數。 – Lankymart
我都回蕩着SQL,並且他們都是在2次不同的迭代是正確的。我試圖在do ... while循環中重新連接ADODB.Connection,並發現錯誤也發生在那裏。所以我的推斷是它不一定是導致錯誤的Recordset,而是第二次迭代中的MyConnection。 – TheTinkerer
好的,你正在使用的SQL Server版本呢?嘗試使用正確的SQL Server而不是一般的ODBC驅動程序,請參見http://connectionstrings.com/sqlserver/ – Lankymart