アクセス テーブルリンク(とインポート)
全てのテーブルのリンクを貼り直すプロシージャ
アクセスの場合、プログラム部分のMDBを本番環境にリリースする際に
リンクテーブルを開発環境から本番環境に変更する動作がわずらわしいので、
下記のプロシージャを作成、実行することによって、全部のテーブルのリンクを
定数で指定したMDBに自動で貼り直す
※リンク先が複数ある場合は使用禁止、要修正
Public Const GstrMdbPath = "本番環境のテーブルリンク先MDBのフルパス"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
'本番環境←→開発環境 の切替を行います
'GstrMdbPath定数を切り替えてから実行すること
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub 本番環境への切替とリリース準備()
If GstrMdbPath <> "本番環境のテーブルリンク先MDBのフルパス" Then
If MsgBox("リンクが本番環境になっていません。いいですか?", vbYesNo Or vbDefaultButton2) <> vbYes Then Exit Sub
End If
Dim objT As Object
For Each objT In CurrentDb.tabledefs
'テーブルリンクの貼り直し
If objT.Properties("Connect") <> "" Then
'テーブル削除
DoCmd.DeleteObject acTable, objT.Name
'リンク
DoCmd.TransferDatabase acLink, "Microsoft Access", GstrMdbPath, acTable, objT.Name, objT.Name
End If
Next
MsgBox "処理完了"
End Sub
上のソースはMDBへのリンク用。リンク先がSQLサーバーの場合のリンク作成は
次のように記述する。
※テーブル名がdbo_〜となっている場合
'コネクション文字列
Const CON As String = "ODBC;DRIVER=SQL Server;SERVER=サーバ名;DATABASE=データベース名;UID=ユーザー;PWD=パスワード"
'リンク
DoCmd.TransferDatabase acLink, "ODBC データベース", CON, acTable, Replace(objT.Name, "dbo_", ""), objT.
全てのテーブルをドロップ&インポートするプロシージャ
インポートのやり直しプロシージャ
テスト環境に最新のデータを持って来たいときに便利
※複数のインポート先やリンクテーブルがある場合は使用禁止、要修正
Public Const GstrImportMdbPath = "本番環境のテーブルインポート元MDBのフルパス"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
'全部のテーブルをインポートしなおします
' GstrImportMdbPathを切り替えてから実行すること
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub テーブル再インポート()
Dim strSQL As String
Dim objT As Object
For Each objT In CurrentDb.tabledefs
'システムテーブルは除外する
If Left(objT.Name, 4) <> "MSys" Then
'テーブル削除
DoCmd.DeleteObject acTable, objT.Name
'インポート
DoCmd.TransferDatabase acImport, "Microsoft Access", GstrImportMdbPath, acTable, objT.Name, objT.Name
End If
Next
MsgBox "処理完了"
End Sub
|