2014-12-16 3 views
1

여기 내 문제입니다 : 네트워크 하드 드라이브에있는 .mdb 파일에서 데이터를 가져와야합니다. 나는에 연결하는 ADODB를 사용하지만,하고 나는 그것을 오류를 반환 만든 레코드 집합에서 필드 값을 반환 할 때 : 내가 노력 순간VBA. .mdb 파일에서 데이터를 가져옵니다. 개체가 닫힐 때 작업이 허용되지 않습니다.

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 

: 여기

Operation is not allowed when the object is closed

내 코드입니다 다양한 종류의 연결. thats는 내가 혼란스럽게 만드는 것은 .mdb 파일에 연결하고 RecordSet을 생성하지만 대부분의 값은 "개체가 닫힐 때 작업이 허용되지 않습니다."라고 말합니다. 문제는 내가 연결하고 레코드를 얻는 방법과 같다고 생각합니다. 때문에 SQL 데이터베이스에 연결하는 동일한 메서드를 사용하고 그것을 잘 작동합니다.

어떤 도움을

* 편집을 이해할 수있을 것이다

:로 SQLRequest = "SELECT * StackID는 = XXXXX tblStack로부터"

변경된 코드 이것 :

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 

아직도 디버그하지 않는 인쇄 아무 것도 및 지역 창에서 해당 필드 (0) .Value 작업 개체를 닫을 때 허용되지 않습니다.

+0

'SQLRequst'에는 무엇이 들어 있습니까? –

+0

오류가 발생한 라인은 무엇입니까? – Gareth

+0

디버그가 아무 것도 출력하지 않는다는 것이 미리 알려주는 것은 오류가 아닙니다. 그리고 Locals 윈도우를 볼 때 rs.Fields (0)의 값은 객체가 닫혀있을 때 Operation이 허용되지 않습니다. – gerain

답변

1

SQLRequst 문자열에 문제가 :

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

'' '.