2011-09-08 32 views
5

Tôi đã tạo chế độ xem trên SQL Server 2000 và liên kết chế độ xem với cơ sở dữ liệu Access 2007 của tôi thông qua ODBC. Mở chế độ xem từ Access hiển thị những gì trông giống như một giá trị trùng lặp. Tôi đã cập nhật chế độ xem của mình để bao gồm các id của dữ liệu đang được đề cập đến và nó đã được sao chép.Tại sao chế độ xem được liên kết cung cấp các kết quả khác nhau từ MS Access và Trình quản lý SQL?

Dường như quyền truy cập hiển thị bản ghi đầu tiên cho từng loại cho mỗi hàng thuộc loại đó. Điều này question được đề cập xem xét các mệnh đề Order By hoặc Top, nhưng tôi không sử dụng một trong hai điều đó trong quan điểm của tôi. Khung nhìn liên kết 8 bảng với nhau và điều duy nhất tôi có thể nghĩ đến là một số bảng mà tôi có trong quan điểm của mình, tôi không có liên kết trong Access. Tôi sẽ liên kết những bảng này cũng chỉ để thử nó, nhưng tôi không nghĩ rằng tôi cần chúng trong Access.

Tôi đã mệt mỏi khi tìm kiếm câu trả lời của Google, nhưng tôi không có nhiều may mắn ngoài câu hỏi tôi đã đề cập. Hành vi này có bình thường đối với các chế độ xem được liên kết như thế này không?

này được kết quả của tôi từ sql quản lý:

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

Và trong việc tiếp cận tôi thấy điều này:

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

Trả lời

5

Bạn không cần phải tất cả các bảng 8 liên kết trong Access ... các xem là đủ, Access không cần biết về các bảng bên dưới.

Tôi nghĩ bạn có vấn đề khác, tôi cũng gặp phải các sự cố tương tự như của bạn.
Khi tôi liên kết một cái nhìn SQL Server trong Access thông qua ODBC, một cửa sổ bật lên rằng muốn tôi chọn một định danh duy nhất (đọc: khóa chính) từ các cột trong giao diện:

"select unique identifier" window

Nếu tôi không chọn bất cứ điều gì (hoặc một số cột sai, làm không xác định một bản ghi duy nhất), Truy cập vít lên các dữ liệu được hiển thị như trong ví dụ của bạn.
Rõ ràng Access không thể hiển thị chính xác chế độ xem mà không có số nhận dạng duy nhất.

Giải pháp cho vấn đề của bạn:
Như tôi hiểu quan điểm của bạn, id là duy nhất, phải không?
Nếu có, chỉ cần xóa chế độ xem, liên kết lại chế độ xem qua ODBC và khi cửa sổ "chọn số nhận dạng duy nhất" bật lên, bạn cần chọn cột id.

+0

Tôi biết điều đó thật đơn giản. Tôi vừa mới làm mới bảng khi tôi thêm ID. Không xóa nó không cung cấp hộp thoại Bản ghi duy nhất. Cảm ơn. – xecaps12

1

Khi bạn tạo liên kết ODBC trong Access hoặc bảng SQL Server, Access lưu trữ thông tin meta về nguồn dữ liệu SQL Server đó. Nếu sau này bạn thay đổi cấu trúc bảng SQL Server hoặc định nghĩa xem, truy cập 'thông tin được lưu trong bộ nhớ cache không được cập nhật đáng tin cậy để khớp ... ngay cả khi bạn "làm mới" liên kết. Sẽ an toàn hơn khi xóa liên kết và tạo lại liên kết để đảm bảo rằng thông tin được lưu trong bộ nhớ cache của Access phù hợp với nguồn dữ liệu đã sửa đổi.

Dường như bạn đã khám phá ra thực tế này với sự giúp đỡ của Cristian. Tôi đang nhấn mạnh điểm này vì lợi ích của những độc giả khác. Điều này có vẻ là một bản ghi khá phổ biến, nhưng có thể dễ dàng tránh được khi bạn hiểu những gì đang xảy ra dưới bìa.

+0

Nó cũng giúp biết cách truy cập xử lý dữ liệu nếu bạn không chọn số nhận dạng duy nhất hoặc không đủ số nhận dạng.Tôi vừa chọn trường loại lần đầu tiên không biết quyền truy cập sẽ cuộn kết quả lên bằng các giá trị đã chọn. Tôi chỉ giả định nó sẽ làm cho truy vấn xem chậm hơn bằng cách không chọn một giá trị thực sự duy nhất, không thay đổi kết quả. – xecaps12

+0

Vâng, điều đó làm tôi ngạc nhiên. Không có khóa duy nhất, tôi cho rằng Access sẽ coi nguồn dữ liệu là chỉ đọc, nhưng * không * trả về một tập hợp hàng khác. Tôi không hiểu tại sao điều đó lại xảy ra. Vẫn thú vị là vấn đề đã biến mất sau khi bạn tạo lại, thay vì làm mới, liên kết. – HansUp

+1

Access thường xử lý tất cả mọi thứ dưới dạng chỉ đọc nếu nó không có khóa ... nhưng ngoài ra, nó sẽ hiển thị các chế độ xem được hiển thị (chỉ xem, không có vấn đề với các bảng mà tôi biết) nếu không có khóa hoặc khóa sai đã chọn. Tôi không hiểu nó, nhưng tôi chạy vào nó khá thường xuyên tại nơi làm việc, bởi vì chúng tôi có một vài người dùng quyền lực (bộ điều khiển, chủ yếu) có MDB với các khung nhìn và các bảng SQL Server được liên kết để họ có thể tạo và chạy các truy vấn tùy chỉnh. Và gần như mọi khi họ liên kết một chế độ xem mới với MDB của họ ... –

Các vấn đề liên quan