2013-12-20 3 views
0

Access VBA에서 외부 ODBC 테이블로 로컬 데이터베이스 테이블 중 하나를 업데이트하려고합니다.외부 ODBC 테이블에서 VBA 업데이트 테이블에 액세스

다음은 업데이트 코드의 일부입니다.

Dim db As Database 
Dim qdf As QueryDef 
Dim updateQuery As String 

updateQuery = "My_Update_Query" 

Set db = CurrentDb() 
Set qdf = db.CreateQueryDef 
qdf.SQL = updateQuery 

qdf.Execute dbFailOnError 

내 코드는 qdf.Execute 행에서 실행이 중지됩니다. "개체가 잘못되었거나 더 이상 설정되지 않았습니다."라는 오류 메시지가 나타납니다. 오류 코드 3420.

내 업데이트 쿼리에서 내 로컬 테이블 필드 값을 외부 ODBC 테이블 필드 값과 동일하게 설정했습니다. 외부 ODBC 테이블은 이미 내 Access에서 링크 테이블로 가져 왔습니다.

여기 외부 테이블에 명시 적으로 연결해야하는지 알 수 있습니까? 그렇다면 어떻게해야합니까?

도움을 위해 미리 감사드립니다.

+1

필자는 연결 문자열을 직접 지정하고 레코드 집합에서 트랜잭션을 실행할 수 있도록 이러한 유형의 작업에 항상 레코드 집합을 사용합니다. – engineersmnky

+3

* My_Update_Query *라는 저장된 쿼리가 있고 해당 쿼리를 실행하려고합니까? 그렇다면 Access 쿼리 디자이너에서 테스트 할 때 오류없이 작동합니까? – HansUp

+0

내게 이것은 누락 된 객체 라이브러리 참조처럼 보입니다. 'VBA> 도구> 참조'. – Smandoli

답변

2

"My_Update_Query"는 유효한 SQL 문이 아니며 qdf.SQL이 필요합니다. 그건 당신이 사용 실행하려는 쿼리의 이름의 경우 전체 QueryDef 물건을

Dim qdf As QueryDef 

Set qdf = CurrentDb.QueryDefs("My_Update_Query") 
qdf.Execute 

또는 제거하고 단지 말 :만큼

DoCmd.OpenQuery "My_Update_Query" 

를 ODBC 테이블은 당신이 shouldn 데이터베이스에 연결되어로 매번 명시 적으로 연결해야합니다.

+0

"My_Update_Query"는 쿼리 개체가 아니지만 업데이트 SQL이 포함 된 내 코드 문자열입니다. 그래서 그것은 CurrentDb.QueryDefs ("My_Update_Query")에서 직접 참조 할 수 없다고 생각합니다. 나는 또한 Set qdf = db.CreateQueryDef (, updateQuery)를 시도했다. 또한 qdf.execute 문에 "Object invalid or 더 이상 설정되지 않았습니다"오류가 발생했습니다. – got2nosth

+0

SQL을 게시 할 수 있습니까? – Mike

+0

당신이 옳습니다. 명시 적으로 테이블을 다시 연결할 필요는 없지만 ODBC 테이블에 연결할 때 기본 키를 처리해야합니다. – got2nosth

관련 문제