リンクテーブルをVBAで行う方法についてご紹介します。
開発環境:win7 + access2010 + MySQL
テーブル
テーブルに下記のテーブルを作成します。
・link_tblテーブル
└tbl_name データ型:テキスト型
link_tblというのをAccessのローカルテーブルに作成します。(実テーブル)
項目はtbl_nameでデータ型はテキストで、主キー設定は不要です。
項目はtbl_nameでデータ型はテキストで、主キー設定は不要です。
フォーム
メニュー画面を作成しリンク設定ボタンを追加します。
そのボタンクリックイベントをVBAで記述します。
VBA
リンク設定ボタンのクリックイベントに下記のコードを入力します。
'--- Private Sub cmdリンク設定ボタン_Click() If funSetConnect("link_tbl") = True Then MsgBox "リンク設定が正常に終了しました。", vbInformation + vbOKOnly, "リンク設定" End If End Sub
関数1(リンクテーブル接続)
リンク設定ボタンのクリックイベントからCALLされます。
'Rem ----------------------------------------------------------- 'Rem 関数名 : funSetConnect 'Rem 処理内容 : リンクテーブル接続 'Rem 引 数 : pTblNm 'Rem 戻り値 : 結果 'Rem ----------------------------------------------------------- Public Function funSetConnect(pTblNm As String) As Boolean Dim db As Database Dim lnkPath As String Dim rec As Recordset Dim tblNm As String On Error GoTo Error funSetConnect = False Set db = CurrentDb Set rec = db.OpenRecordset(pTblNm, dbOpenDynaset) lnkPath = getLnkPath With rec If .EOF = False Then .MoveFirst Do Until .EOF tblNm = rec.Fields(0) If ExistTable(tblNm) Then db.TableDefs.Delete tblNm End If DoCmd.TransferDatabase acLink, "ODBC データベース", lnkPath, acTable, tblNm, tblNm, False .MoveNext Loop End With db.Close Set rec = Nothing Set db = Nothing funSetConnect = True Exit Function Error: MsgBox "エラーが発生しました。エラー内容:" & ERR.Description & Chr$(10), vbCritical End Function
関数2(ODBC接続文字列取得)
ODBC接続文字列を取得するため、INIファイルの情報を読込んでいます。
INIファイルにすることにより、ユーザーは設定ファイルのみ修正すれば
環境変わっても使えるようになるというメリットがあります。
'Rem ----------------------------------------------------------- 'Rem 関数名 : getLnkPath 'Rem 処理内容 : ODBC接続文字列取得 'Rem 引 数 : なし 'Rem 戻り値 : 接続文字列 'Rem ----------------------------------------------------------- Public Function getLnkPath() As String On Error GoTo ERR ' 接続文字列取得 GsDataBase = ReadINI("MYSQL", "DB_NAME") GsUserName = ReadINI("MYSQL", "DB_USER") GsPassword = ReadINI("MYSQL", "DB_PASS") getLnkPath = "ODBC;DSN=" & GsDataBase & ";UID=" & GsUserName & ";PWD=" & GsPassword & ";LANGUAGE=us_english;DATABASE=" & GsDataBase & "" Exit Function ERR: MsgBox "環境設定ファイルを確認してください。" + Chr$(10) + "読み込めませんでした。", vbCritical End Function
各PCでODBC設定は別途必要です。
ODBCのDSN名等を定義しておくかiniファイルから読込むかすると良いです。
コメント