Мне нужно получить все имена таблиц в базе данных. Я все заканчивается с ошибкойОперации с несколькими шагами 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}
без каких-либо проблем.
Попробуйте закомментировать эту строку: 'Set objRecords = objRecords.NextRecordset() '. Я считаю, что источник вашей операции не разрешен, когда объект закрыт. –
Просто прокомментировал это и получил операцию, когда объект закрыт. – dark2222
, когда вы используете SET NOCOUNT ON в запросе, что означает, что вы получаете только один набор записей и устанавливаете objRecords = objRecords.NextRecordset() закрывает текущий RS-обход закрыто – DimaSUN