2009-11-02 9 views
3

이전에 물어 본 적이 있지만 찾을 수없는 것이 확실합니다.ms 액세스의 상대 테이블 링크

Access 2003에서 연결된 테이블의 위치에 대한 상대 경로를 설정할 수 있습니까?

다른 테이블도 mdb 파일에 저장됩니다. 이러한 데이터베이스는 때때로 odbc 또는 oledb를 통해 연결되므로 Access에서 파일을 열 때 발생하는 vba 코드를 사용하면 작동하지 않습니다. 가능하다면 올바른 테이블이 링크 될 때마다 확인하는 대신 연결된 프로그램에 데이터베이스의 '분할'을 보이지 않게 유지하고 싶습니다.

의견에 따라 편집 :

더 자세히 설명하려면; 필자가 염두에두고있는 유스 케이스는 모두 동일한 디렉토리에있는 상호 연결된 액세스 데이터베이스 세트이다.

그룹으로 복사하면 모든 링크가 계속 작동하지만 업데이트 될 때까지 잘못된 데이터를 가리 킵니다. Access에서 mdb 파일을 열면 간단한 vba 매크로가 링크를 확인하고 필요하면 링크를 업데이트 할 수 있습니다. 문제는 현재의 설정에서 데이터베이스가에서 열리는 것보다 oledb/odbc를 통해 다른 프로그램에 의해 훨씬 더 자주 에 연결된다는 것입니다.

질문 : mdb 파일을 이동할 때마다 수동으로 업데이트를 트리거해야합니까, 아니면 A) 링크를 상대적으로 만들거나 B) 연결이 만들어지면 확인을 트리거 할 수 있습니까?

기존 데이터베이스를 분할하는 것이 목적이므로 반드시 필요한 경우가 아니면 이러한 검사를 실행하는 연결 프로그램을 수정하지 않으려합니다.

+1

@Cogwheel 당신은 제가 선택의 여지가 있다고 가정합니다 ... – mavnn

+0

이런 종류의 배열을 요구하기에 충분히 복잡한 작업을한다면, 접근 할 때가 아니라는 가능성이 있습니다. 또는 최소한 디자인을 재고해야 할 수도 있습니다. – Cogwheel

+0

참 : P (나는 그 감각을 알고있다) – Cogwheel

답변

1

이것은 매우 흥미로운 질문입니다! Raj Moore가 제안했듯이, 테이블이 연결될 때 경로가 절대 경로가되므로 옵션 A (링크 상대 만들기)가 작동하지 않습니다.

옵션 B에 대해서는 소유하고있는 연결 요청을 차단하고 테이블을 다시 링크하는 데 필요한 코드를 실행해야합니다. Access에 기본 제공되는 기능이 없기 때문에이 상자를 즉시 ​​사용할 수 있습니다. 비록 당신이 이것을하기 위해 함께 코드를 자갈 할 시간이 있었다고해도 나는 그것이 실제로 어떻게 작동하는지에 대한 의미를보기 시작하면 실용적이지 않다는 것을 알게 될 것이라고 생각한다. (예를 들어, 다른 클라이언트가 첫 번째 클라이언트가 쿼리를 실행하는 동안 다른 클라이언트가 데이터베이스에 연결할 때 어떤 일이 발생합니까? 단일 클라이언트가 동일한 mdb에 대해 여러 연결을 열 경우 어떻게됩니까?)

필자가 말했던 것처럼 클라이언트 응용 프로그램을 변경할 수 있습니다 시작할 때 테이블을 다시 링크하는 것이 효과적 일지 모르지만 둘 이상의 클라이언트가 동일한 백엔드 mdb 파일에 연결하려고 시도하는 상황에 대해 생각할 필요가 있습니다. 이 이되어서는 안된다고해도 매우 좋습니다. 고려해야 할 또 다른 포인트는 유지 보수 가능성입니다.귀하를 따르는 다른 사람이 클라이언트 응용 프로그램이 시작시 다시 연결을 수행하고 새 사용자가 도착하면 연결 문자열 정보를 한 클라이언트 PC에서 다른 클라이언트 PC로 단순히 복사하지 않는다는 사실을 알고 있습니까?

mdb를 두 개의 파일로 나눌 훌륭한 이유가있을 것입니다.하지만 우리가이 질문의 일부로 작업하고있는 정보의 작은 부분에 대해서만 나누면 충분히 제공 할 수 있을지 모르겠습니다. 이 잠재적 인 문제를 능가하는 이득을 얻을 수 있습니다.

이 데이터베이스를 분할해야하고 네트워크 공유에 결과 mdb 파일의 복사본을 별도로 유지해야하는 경우 가장 안전한 대안은 VBA 프로 시저를 작성하여 상대 경로를 사용하여 데이터베이스의 테이블을 다시 연결하는 것입니다. 파일을 새 디렉토리에 복사 할 때 프로 시저를 한 번만 실행하여 테이블을 다시 링크하면됩니다.

+0

응답 해 주셔서 감사합니다. 불행히도 분할의 이유는 저장해야하는 데이터의 양이 Access 2003의 2GB 제한을 훨씬 능가한다는 것입니다. 불행히도 Access 업그레이드 나 다른 솔루션에 데이터 저장 옵션을 사용할 수있는 옵션이 없습니다. 내가 원하는 일을 할 수 없다는 것과 같은 결론에 도달했습니다. 파일을 복사 할 때 수동으로 다시 링크해야합니다. – mavnn

0

상대 경로를 사용하여 테이블을 연결할 수 있지만 링크 시점에서 상대 경로가 평가되고 절대 경로로 변환됩니다.

상대 경로를 계속 사용하려면 실행시 테이블을 상대 경로에서 연결하는 프로 시저를 실행하는 AutoExec 매크로가 있어야합니다.

이렇게하면 시작 시간이 늘어납니다.

+0

AutoExec 기술을 알고 있지만 불행히도 현재 상황에서 도움이되지 않습니다 (질문 참조). 이것은 내가 원하는 것을 할 수있는 방법이 있다는 것을 의미하지 않는다. 적어도 포기하기 전에 확인하고 싶었다. – mavnn

관련 문제