の作業は、あなたはすべてのマシン上のODBC接続は必要ありません。 DoCmd.TransferDatabase
でODBC接続文字列を使用して接続を作成できます。これは永続的なものなので、フロントエンドの開発コピーで接続/更新を実行するだけで、接続は存在し、エンドユーザーのコピーに保持されます。
あなたは認証の問題に対処する必要があります。セキュリティ状況に応じて、単一の「データベースユーザー」を作成し、上記の接続にユーザー名とパスワードを含めることができます。あなたがAD環境にいるなら、それを認証のために使うことができます。または、ユーザーまたはユーザーグループごとに個別のSQLアカウントを作成します。あなたが何をしていても、アクセスがそれらに読書/書込み権限を持っている場合、ユーザーはテーブルを見たり編集したりすることができます。ビューを使用して個々のテーブルを保護し、テーブル自体ではなくアクセスにリンクすることができます。
ユーザーにフロントエンドのローカルコピーを作成させないようにすることをおすすめします。これは、ユーザーがフロントエンドの最新バージョンを使用していることを確認する悪夢になります。代わりに、ショートカットを作成するように奨励してください。ユーザーごとのローカルの一時テーブルや、フォームやレポートを動的に編集するコードがない限り、誰もが同じフロントエンドファイルを使用しないようにする理由はあまりありません。その場合でも、各ユーザーのフロントエンドコピーを作成または上書きする展開バッチファイルを作成します。 SQL Serverデータベースにリンク
サンプルコード:
Public Sub LoadDatabase()
Dim MyDB As DAO.Database
Set MyDB = CurrentDb
Dim d As DAO.Recordset
Set d = MyDB.OpenRecordset("SELECT TableName FROM tblLinkTables")
d.MoveFirst
Do While Not d.EOF
DoCmd.DeleteObject acTable, d!TableName
DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;Driver={SQL Server};Server=MYSQLSERVERNAME;Database=MyDatabaseName;Uid=DatabaseUser;Pwd=DatabaseUserPassword", acTable, d!TableName, d!TableName, False, True
d.MoveNext
Loop
d.Close
Set d = Nothing
End Sub
リンクへのテーブルのリストが各テーブルをリンクするための単一のフィールドのTableNameでtblLinkTablesと呼ばれるローカルテーブルに存在します。これは非常に単純化されたバージョンです。私が実際に使用しているのは、SQLテーブルとは異なるローカルテーブル名を持ち、ビューをリンクしてプライマリキー(オプション)を作成する機能です。
ここではいくつか質問がありますが、まったく簡単なものはありません。アプリケーションのすべてのユーザーに対してデータベースユーザーを作成する必要はありませんが、必要に応じて確実に行うことができます。それは私にとって過度のように聞こえるが、場合によってはそれは意味をなさない。接続の質問については、コード内の接続をどのように作成するかによって異なります。 ODBC接続が必要な場合は、すべてのマシンに1つずつ作成する必要があります。代わりにサーバーに直接接続することをお勧めします。 –