システム開発 備忘録











アクセス テーブルリンク(とインポート)

*** *** *** *** ***


全てのテーブルのリンクを貼り直すプロシージャ
アクセスの場合、プログラム部分の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



Copyright (C) 2009- station-t.com All Rights Reserved , Link Free