以下の提案でコードを更新しました。これはテスト済みで、将来のユーザーが簡単に参照できるようにうまく機能します。
以下のコードを使用して、ユーザーごとに DSN を設定せずにリンク テーブルを作成しています。手動で接続する場合に尋ねられるように、主キーを指定するにはどうすればよいですか。
Dim sConnect As String
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.CreateTableDef
tdf.Name = "dbo_vwFeedback" ' - -- --- This is the Label that you see in Access...
tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=server01\serverinstance;DATABASE=db_name;Trusted_Connection=Yes"
tdf.SourceTableName = "vwFeedback" ' - -- --- This is the actual name in SQL Server, minus the owner.
db.TableDefs.Append tdf
CurrentDb.Execute "CREATE UNIQUE INDEX PK_dbo_vwFeedback_PrimaryKey ON dbo_vwFeedback (DataSetID, FeedbackRef) WITH PRIMARY"
注: 上記は SQL Server VIEW の場合です。SQL Server TABLE の場合も同じですが、この行は必要ありませんCurrentDB.Execute
(主キーがサーバーで正しく設定されている場合)。
このコードは、テーブルをリンクし、主キーを手動で指定する場所にあります。
手動または上記の方法で SQL Server ビューのインデックスの作成を指定しない場合、読み取り専用ビューのみが取得され、誤ったデータが返される場合があります。例については、以下のコメントを参照してください。