2012-03-07 24 views
6

Tôi có chế độ xem có thể cập nhật trong cơ sở dữ liệu máy chủ sql. Khi tôi tạo bảng được nối kết với nó bằng ODBC, tôi được yêu cầu chọn định danh bản ghi duy nhất, để nó có thể cập nhật được.Mã VBA để thêm bảng được nối kết với khóa chính

Dialog in the wizard to select unique identifier

tôi cần phải tự động liên kết lại bảng này trong VBA, vì vậy tôi cần phải thả và tạo lại bảng liên kết (tôi không thể cập nhật tài sản TableDef.Connect cho bảng ODBC).

tôi tìm thấy một số giải pháp, mà không được áp dụng trong trường hợp của tôi:

  • tạo chỉ mục sau khi kết nối: Tôi có thể không cho nguồn ODBC
  • tạo khóa chính trong cơ sở dữ liệu: Tôi không thể, đó là một cái nhìn

Đây sẽ là áp dụng:

  • một mã mà sẽ làm những gì doe thuật sĩ s
  • một mã để liên kết lại mà không cần phải xóa TableDef và làm việc với ODBC bảng liên kết, và sẽ không reset thiết lập trước đó nhận dạng

workaround tạm thời:

  • chuyển đổi nhằm cụ thể hóa quan điểm và tạo chỉ mục duy nhất trên đó
+1

Làm thế nào về: http://bytes.com/topic/access/answers/199482-primary-key-sql-server-linked-view-access-database? – Fionnuala

Trả lời

11

Tại sao bạn không thể tạo chỉ mục cho nguồn ODBC sau khi liên kết?

Tại nơi làm việc, chúng tôi đang sử dụng truy cập với các bảng SQL Server liên kết, và khi ai đó muốn kết nối với một cơ sở dữ liệu khác nhau (thay đổi từ môi trường sản xuất để kiểm tra môi trường), chúng tôi làm điều gì đó như thế này cho tất cả các bảng:

Dim TD As TableDef 
Dim ConString As String 

ConString = "ODBC;DRIVER={SQL Server};SERVER=ServerName;DATABASE=DbName;Trusted_Connection=Yes;" 

CurrentDb.TableDefs.Delete "SomeTable" 

Set TD = CurrentDb.CreateTableDef("SomeTable", 0, "SomeTable", ConString) 
CurrentDb.TableDefs.Append TD 
Set TD = Nothing 

CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON SomeTable (PrimaryKeyColumn) WITH PRIMARY" 
Các vấn đề liên quan