Вот моя проблема: мне нужно получить данные из файла .mdb, который находится на сетевом жестком диске. Я использую ADODB для подключения к нему, но когда я пытаюсь вернуть значение поля из RecordSet, что я создал это возвращает ошибку:VBA. Не могу получить данные из файла .mdb. Операция не допускается, когда объект закрыт.
Operation is not allowed when the object is closed
Вот мой код:
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
cmd.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ".mdb"
cmd.CommandText = SQLRequst
cmd.CommandType = adCmdText
cmd.CommandTimeout = 900
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenForwardOnly, adLockReadOnly
Debug.Print rs.Fields(0)
Set cmd.ActiveConnection = Nothing
Set cmd = Nothing
Set rs.ActiveConnection = Nothing
На данный момент я попытался много разных типов соединений. Главное, что меня пугает, заключается в том, что он подключается к файлу .mdb, а также создает RecordSet, но большинство значений имеют значение «Операция не разрешена, когда объект закрыт» Я думаю, что проблема связана с тем, как я соединяюсь и получаю записи потому что я использую тот же метод для подключения к базе данных sql, и он работает нормально.
Любая помощь будет оценена
* Отредактировано: SQLRequest = "SELECT * FROM tblStack WHERE StackID = XXXXX"
Изменен код к этому:
Dim rs As New ADODB.Recordset
Dim conn As New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ".mdb"
rs.Open SQLRequst, conn, adOpenForwardOnly, adLockReadOnly
Debug.Print rs.Fields(0)
Set cmd.ActiveConnection = Nothing
Set cmd = Nothing
Set rs.ActiveConnection = Nothing
Еще отладки не печатает ничего и в окне Locals показывает, что поля (0) .Value Операция не допускается, когда объект закрыт
Что содержит 'SQLRequst'? –
В какой строке вы принимаете ошибку? – Gareth
Это не ошибка, заключающаяся в том, что отладка ничего не распечатывает. И когда я смотрю в окно Locals, значение rs.Fields (0) - операция не разрешается, когда объект закрыт. – gerain