我需要獲取數據庫中的所有表名稱。 我一直與多步OLEDB操作生成錯誤
operation is not allowed when the object is closed
我搜索了一圈,發現很多說法還應該加上SET NOCOUNT ON
或Set objRecords = objRecords.NextRecordset()
這會導致錯誤的錯誤結束:
multiple-step ole db operation generated errors. Check each OLE DB status value, if availabe. No Work was done
這是我被困無論我在做什麼,我都會在這些錯誤之間轉移
查詢我試圖做
SET NOCOUNT ON Use {Database} SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG='{Database}'
我的連接字符串"Provider=SQLOLEDB; Data Source={Server}; Initial Catalog={Database}; User ID={Login}; Password={Password};"
我的SQL服務器是Windows Server 2012的
我得到的錯誤在功能上:
Function LoadTableData()
Dim objSqlConnection : Set objSqlConnection = CreateObject("ADODB.Connection")
Dim objRecords : Set objRecords = CreateObject("ADODB.RecordSet")
objSqlConnection.Open ReplaceInfo()
Dim ReplacedText : ReplacedText = Replace(SelectAllDatabaseTables, "{Database}", SelectedDatabase)
objRecords.Open ReplacedText, objSqlConnection, 3, 3
Set objRecords = objRecords.NextRecordset()
Do While Not objRecords.EOF
alert("Test")
objRecords.MoveNext()
Loop
End Function
對於我所看到的應該不存在問題但我認爲這與查詢有關,因爲我可以在沒有任何問題的情況下執行SELECT * FROM {Database}
。
嘗試註釋掉這一行:'設置objRecords = objRecords.NextRecordset()'。我相信這是你的''操作是不允許的,當對象關閉'錯誤的源頭。 –
剛剛註釋掉了,當對象關閉時不允許操作' – dark2222
當你在查詢中使用SET NOCOUNT ON時,意味着你只有一個記錄集並且設置objRecords = objRecords.NextRecordset()關閉當前RS - oblect is已關閉 – DimaSUN