2014-07-22 12 views
0

현재 Access 2010에서 쿼리를 작업하고 있으며 아래 쿼리를 작동 시키려고합니다. 내 로컬 DB와 서버 사이에 연결 문자열이있어서 잘 작동합니다. 이 상황의 표에서 통과 쿼리에서 로컬 DB 테이블을 사용하는 방법?

Select column1 , column2 from serverDB.dbo.table1 where column1 in (Select column1 from tbl_Name1)

내가 갈 수있는 통과하고있는 서버의 테이블이지만, tbl_Name1 내가 제약 조건을 만들 때 사용하려고 내 접근 DB에 실제로 테이블입니다 내가 서버에서 당기는 데이터.

쿼리를 실행하려고하면 tbl_Name1이 (가) 있다고 생각하지 않는다는 오류가 발생합니다.

도움을 주시면 감사하겠습니다.

답변

0

저는 통과 쿼리가 서버에서 실행되는 문제라고 생각합니다. 테이블 중 하나가 로컬 액세스 파일에 있으므로 테이블을 찾을 수 없습니다.

가능한 통과 방법은 쿼리 문자열 자체가 아닌 중첩 된 쿼리의 결과로 SQL 문자열을 작성할 수 있다는 것입니다 (결과 수에 따라 실용적이거나 그렇지 않을 수도 있음)

예 : 대신 Select column1 from tbl_Name1을 사용하십시오. "c1result1","c1result2",....

+0

작동시키기위한 방법이 있습니까? – tarheel

+1

테이블이 연결되어있는 경우 두 테이블 모두 로컬이므로 테이블을 처리 할 수는 있지만 쿼리의 성능이 저하 될 수 있습니다 – ashareef

+0

비슷한 토론 http://stackoverflow.com/questions/23615708/sql-join- from-microsoft-access-table-to-another-table-through-ODBC-using-pass-th – ashareef

0

비슷한 상황에서 다른 사람들을 도울 수있는 해결책을 찾았습니다.

이 접근법은 로컬 Access 데이터베이스에서 하나의 쿼리를 실행하고 필요한 모든 것을 한 번에 얻을 수 있기 때문에 쉽습니다. 그러나 원격 서버와는 달리 사용자 자신의 로컬 컴퓨터에서 많은 필터링/변경 결과를 수행 할 수 있으므로 반드시 빠를 필요는 없습니다.

단계

  1. 를 쿼리를 만들기 만들 그것을 쿼리 "를 통해 통과"원격 데이터베이스에 연결하기 위해 "ODBC 연결 str을"속성을 설정합니다.
  2. 는 새 쿼리를 작성하고 정기적 쿼리를 "선택"할 어쩌면 PassThroughQuery
  3. , SELECT RemoteId From RemoteTable 같은 쿼리를 통해 통과, 뭔가를 쓰기 쿼리를 통해 이름을 패스를 제공합니다.
  4. 방금 ​​작성한 통과 쿼리를이 새로운 쿼리에 테이블으로 작성하여 쿼리를 작성하십시오 (쿼리를 테이블로 사용하는 것이 이상하지만 작동합니다). PassThroughQuery "테이블"을 로컬에 연결하십시오 테이블과 로컬 테이블의 값을 기준으로 필터링, 잠재적으로 천천히이기는하지만이 방법을 사용하면 깨끗하게 로컬 액세스 데이터베이스 테이블의 쿼리를 통해 패스의 결과와 데이터를/믹스에 가입 할 수 있습니다 SELECT R.RemoteId, L.LocalValue FROM PassThroughQuery R INNER JOIN LocalTable L ON L.LocalId = R.RemoteId where L.LocalValue = 'SomeText'

같은, 관련된 많은 데이터가있는 경우.