2013-08-27 2 views
0

Access에 하나의 테이블이 있습니다. 하나는 Excel에 연결되고, 다른 하나는 MySQL에 연결되며, 하나의 행과 열로 LastQuery라는 로컬 테이블이 있습니다. Excel 테이블의 데이터를 선택하고 MySQL 테이블에 삽입하는 타이머가있는 폼의 VBA 쿼리를 사용합니다. 동시에, 내가 Lastqueery에 삽입 한 마지막 레코드의 dtmInsertedTime을 업데이트하여 (다음 행의 last으로), 다음 번에 폼 타이머가 틱하면 다음 레코드에서 계속 진행하여 매번 삽입 될 때까지 계속됩니다 기록. 내 코드는 간단하지만 오류가 발생하여 설명대로 작동하지 않습니다. 여기 내 코드입니다 :하나의 링크 된 테이블에서 다른 테이블로 행 삽입

Private Sub Form_Timer() 
CurrentDb.Execute "INSERT INTO tblevent (vchrFacility, intWorkCell, intStn, intEventCode) SELECT vchrFacility, intWorkCell, intStn, intEventCode from excelTblEvent where dtmInsertedTime > LastQuery.Last" 
CurrentDb.Execute "UPDATE LastQuery, excelTblEvent SET LastQuery.Last = excelTblEvent.dtmInsertedTime" 
End Sub 

편집 : 너희들 없이는 불가능했을 수

. 내 코드는 아무 문제없이, 나는 그것을 수행 할 작업을 정확하게 수행합니다

Option Compare Database 
Private Sub Form_Timer() 
CurrentDb.Execute "INSERT INTO tblevent (vchrFacility, intWorkCell, intStn, intEventCode) SELECT vchrFacility, intWorkCell, intStn, intEventCode FROM excelTblEvent WHERE dtmInsertedTime > DLookup('Last', 'LastQuery')" 
CurrentDb.Execute "UPDATE LastQuery, excelTblEvent SET LastQuery.Last = excelTblEvent.dtmInsertedTime" 
End Sub 
+1

받은 오류는 무엇입니까? –

+0

코드를 수정할 때마다 다른 오류가 발생합니다. 위의 코드에서 런타임 오류 3061이 발생합니다 (매개 변수가 너무 적습니다. 예상 1). 내 연구 결과가 쿼리의 오류로 인해 쿼리의 부분을 없애고 런타임 오류 3155 (ODBC - 연결된 테이블의 삽입에 실패했습니다)가 붙어 있습니다. – Th1nker

답변

0

액세스 'db 엔진은 INSERT 문에 대해 불평 할 것입니다. 명령문의 SELECT 부분을 검사 :

SELECT vchrFacility, intWorkCell, intStn, intEventCode 
from excelTblEvent 
where dtmInsertedTime > LastQuery.Last 

WHERE 절은 FROM 절에 언급되지 않은 데이터 소스, LastQuery를 참조합니다. 그건 안돼. 액세스가 UPDATE 문에 대해 불평하는 경우 쿼리 디자이너를 재 빌드 ...

WHERE dtmInsertedTime > DLookup("Last", "LastQuery") 

을 우리는 LastQuery에 대한 자세한 내용을 알고해야하지만, 추측으로 아마이 작동하지 않을 수 있습니다. 거기서 작업하게 한 다음 VBA 코드를 수정하여 동일한 작업 SQL을 사용하십시오.

+1

오류를 상당히 조용히하는 것처럼 보입니다. 양식은 오류없이로드되지만 새 레코드를 추가하더라도 아무 것도하지 않는 것 같습니다. 나는 당신의 충고를 받아들이고 그것이 기능을 발휘할 때까지 질의 디자이너와 함께 일할 것이다. 고맙습니다. – Th1nker

+0

폼 Timer 이벤트는 까다로울 수 있습니다. 디자이너에서 쿼리가 올바르게 작동하면 명령 단추의 클릭 이벤트와 같은 다른 프로 시저에서 먼저 VBA 코드를 테스트하십시오. 중단 점을 설정하고 F8 키를 사용하여 코드별로 단계별로 각 단계에서 일어나는 일 (또는 발생하지 않은 일)을 확인합니다. – HansUp

+0

도움을 주셔서 감사합니다. 원하는 코드가 정확하게 작동합니다. 내 OP 편집 마지막 코드를 보여줍니다. – Th1nker

0

Database.Execute 방법 도움말 섹션에서 참고는 말한다,

를 ODBCDirect 작업 영역에서는 Microsoft Office Access 2007에서 지원되지 않습니다 Microsoft Access 데이터베이스 엔진을 사용하지 않고 외부 데이터 원본에 액세스하려면 ADO를 사용하십시오.

이 경로를 사용해야 할 수도 있습니다.

+0

아, 그럴 것 같습니다. ADO를 배울 시간! 도움을 주셔서 감사합니다 =) – Th1nker

관련 문제