2017-01-18 68 views
0

我需要獲取數據庫中的所有表名稱。 我一直與多步OLEDB操作生成錯誤

operation is not allowed when the object is closed

我搜索了一圈,發現很多說法還應該加上SET NOCOUNT ONSet 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}

+0

嘗試註釋掉這一行:'設置objRecords = objRecords.NextRecordset()'。我相信這是你的''操作是不允許的,當對象關閉'錯誤的源頭。 –

+0

剛剛註釋掉了,當對象關閉時不允許操作' – dark2222

+0

當你在查詢中使用SET NOCOUNT ON時,意味着你只有一個記錄集並且設置objRecords = objRecords.NextRecordset()關閉當前RS - oblect is已關閉 – DimaSUN

回答

0

我不是完全地肯定這是如何固定的,但我移動使用{}數據庫進行查詢並執行它,而不是到其連接,固定我的問題

相關問題