2012-06-27 3 views
0

dBase IV를 사용하는 일부 레거시 백엔드가 있는데 Access 프론트 엔드를 사용하여 한 테이블에서 다른 테이블로 레코드를 복사 할 수 있기를 원합니다. 간단한 대답은 원본 및 대상 테이블에 연결하고 INSERT 쿼리 또는 유사한 실행하는 것입니다.Access를 사용하여 Dbase 데이터로 복사하기

그러나 제 경우에는 백엔드가 단일 DBF 파일이 아니지만 복사 작업을 위해 동적으로 링크해야하는 수백 개의 파일이 있습니다. 현재 나는 복사 작업을 수행 할 때마다 VBA에서 TableDefs 속성을 사용하여 링크 정의를 변경하고 새로 고쳐야합니다.

캐치는 프런트 엔드가 공유되므로 링크 된 테이블 정의가 다른 사용자에 의해 수정되지 않도록 각 사용자가 FE의 별도 복사본을 가져야합니다.

링크 된 테이블을 사용하지 않고이 작업을 수행하는 쉬운 방법이 있습니까? 원본과 대상에 대한 DAO 연결을 열 수 있지만 레코드를 복사하는 간단한 방법을 찾을 수는 없습니다 (한 번에 하나씩). 이 주변에 어쨌든 있습니까?

+0

방법 ADO에 대한 ("공급자 = Microsoft.Jet.OLEDB을 .4.0; 데이터 원본 = e : \ My Documents \ dBase; 확장 속성 = dBase III ")? – Fionnuala

+0

글쎄, 내가 현재, 둘 ​​다 내 연결된 테이블 연결 문자열 및 VBA 않습니다. 문제는 하나의 Dbase 테이블의 모든 쿼리 결과를 다른 데이터베이스의 다른 테이블에 복사하는 것입니다. – nicholas

답변

2

이 다른 위치에있는 DBF에 삽입 링크 DBF 사용하여 쿼리를 실행할 수 있습니다 :

INSERT INTO [dBASE III;DATABASE=z:\docs\].[dbf2.dbf] 
SELECT * 
FROM dbf1; 

또는

INSERT INTO dbf1 
SELECT * 
FROM [dBASE III;DATABASE=z:\docs\].[dbf2.dbf]; 
+0

내가 한번 시도해 보자. FROM 절에서도 같은 구문을 사용할 수 있습니까? – nicholas

+0

다소 다르지만 위를 참조하십시오. – Fionnuala

+0

놀라운. 동일한 쿼리의 INSERT INTO 및 FROM 절에서 [dbase III ...] 구문을 사용할 수 있습니다. 참고로, 테이블 이름의 .dbf 확장자는 선택 사항입니다. 고마워. 고마워. – nicholas

관련 문제