2014-12-16 2 views
1

Вот моя проблема: мне нужно получить данные из файла .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 Операция не допускается, когда объект закрыт

+0

Что содержит 'SQLRequst'? –

+0

В какой строке вы принимаете ошибку? – Gareth

+0

Это не ошибка, заключающаяся в том, что отладка ничего не распечатывает. И когда я смотрю в окно Locals, значение rs.Fields (0) - операция не разрешается, когда объект закрыт. – gerain

ответ

1

Проблема была в строке SQLRequst:

SQLRequest = "SELECT * FROM tblStack WHERE StackID='XXXXX'" 

Нужно было ''.

Смежные вопросы