2011-09-08 3 views
5

SQL Server 2000에 대한보기를 만들고 ODBC를 통해 내 Access 2007 데이터베이스에보기를 연결했습니다. Access에서보기를 열면 중복 된 값처럼 보입니다. 문제의 데이터 ID를 포함하도록 내보기를 업데이트했으며 중복되었습니다.왜 링크 된보기에서 MS Access와 SQL Manager의 결과가 달라 집니까?

액세스 유형이 해당 유형의 모든 행에 대해 각 유형에 대한 첫 번째 레코드를 표시하는 것 같습니다. 이 question은 Order By 또는 Top 절을 언급했지만 언급 한 내용 중 하나를 사용하지는 않습니다. 보기는 8 개의 표를 함께 연결하며 제가 생각할 수있는 유일한 점은 제가보기에있는 표 중 일부입니다. 액세스가 연결되어 있지 않습니다. 이 테이블을 연결하기 위해 연결하려고 합니다만 Access에서 필요하다고 생각하지 않습니다.

나는 Google에서 답변을 찾기가 힘들었지 만 언급 한 질문 외에 많은 행운이 없었습니다. 이와 같은 링크 된 뷰의 경우 정상적인 동작입니까?

나의 결과는 SQL 관리자에서 설정됩니다

id Type   Dim1 
---- ------------ ------ 
3111 Pipe   480 
3112 Fittings  0 
3113 Pipe   1080 
3114 Fittings  0 
3115 Fittings  0 
3116 Fittings  0 
3117 Pipe   216 

및 액세스에 나는이 참조 : 당신은 Access에서 연결된 모든 8 개의 테이블이 필요하지 않습니다

id Type   Dim1 
---- ------------ ------ 
3111 Pipe   480 
3112 Fittings  0 
3111 Pipe   480 
3112 Fittings  0 
3112 Fittings  0 
3112 Fittings  0 
3111 Pipe   480 

답변

5

...을 보기 충분하다, 액세스 기본 테이블에 대해 알 필요가 없습니다.

다른 문제가 있다고 생각하며 비슷한 문제가 발생했습니다. 열에서보기 :

"select unique identifier" window

나는 경우 :
내가 ODBC를 통해 Access에서 SQL 서버 뷰를 연결, 윈도우는 그 (기본 키를 읽기) 고유 식별자를 선택하기 위해 나를 원하는 팝업 아무 것도 선택하지 마십시오 (예 : 이 아닌은 고유 한 레코드를 식별합니다),보기에 표시된 것과 같이 표시된 데이터를 액세스합니다.
명백하게 Access는 고유 한 식별자없이보기를 올바르게 표시 할 수 없습니다. 당신의 문제에 대한

솔루션 :
내가보기를 이해할 때, id 오른쪽 고유?
예인 경우보기를 삭제하고 ODBC를 통해 다시 링크 한 다음 "고유 식별자 선택"창이 나타나면 id 열을 선택해야합니다.

+0

나는 그것이 그렇게 간단 할 것임을 알았다. ID를 추가 할 때 테이블을 새로 고쳤습니다. 삭제하지 않으면 고유 레코드 대화 상자가 표시되지 않습니다. 감사. – xecaps12

1

SQL Server 테이블 또는 뷰에 대한 액세스에서 ODBC 링크를 만들면 Access는 해당 SQL Server 데이터 원본에 대한 메타 정보를 저장합니다. 나중에 SQL Server 테이블 구조 또는보기 정의를 변경하면 Access의 캐시 된 정보가 링크에 "새로 고침"되어도 안정적으로 일치하지 않습니다. Access의 캐싱 된 정보가 수정 된 데이터 소스와 일치하도록 링크를 삭제하고 다시 생성하는 것이 더 안전합니다.

크리스티안의 도움으로이 사실을 발견 한 것 같습니다. 나는 다른 독자의 이익을 위해이 점을 강조하고있다. 이것은 꽤 흔한 일종의 것으로 여겨지지만 커버 아래에서 무슨 일이 벌어지고 있는지 이해하면 쉽게 피할 수 있습니다.

+0

또한 고유 ID를 선택하지 않았거나 충분하지 않은 경우 액세스가 데이터를 처리하는 f}을 아는 데 도움이됩니다.방금 입력 한 값을 기준으로 결과가 표시되는 것을 알지 못했을 때 유형 필드를 선택했습니다. 방금 결과를 변경하지 않고 진정으로 고유 한 값을 선택하지 않아도보기 속도가 느려지 게한다고 가정했습니다. – xecaps12

+0

예, 그게 저를 놀라게했습니다. 고유 한 키가 없으면 Access에서 데이터 소스를 읽기 전용으로 처리하지만 다른 행 집합을 반환하지는 않습니다. 그 일이 왜 일어 났는지 나는 이해하지 못한다. 링크가 새로 고쳐지기보다는 다시 생성 된 후에도 문제가 사라진 것은 흥미 롭습니다. – HansUp

+1

액세스는 일반적으로 키가 없으면 모든 것을 읽기 전용으로 취급하지만 추가로 키나 잘못된 키가없는 경우보기의 표시된 행 집합을 스크루 (보기 만, 알고있는 테이블에는 문제 없음) 선택된. 나는 그것도 이해하지 못한다.하지만 우리는 아주 자주 직장으로 뛰어 들었다. SQL 서버 뷰와 테이블이 연결된 MDB를 가진 파워 유저 (주로 컨트롤러)가있어서 커스텀 쿼리를 만들고 실행할 수 있기 때문이다. 그리고 거의 언제나 MDB에 새로운 시각을 연결합니다. –

관련 문제