リンクテーブルを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ファイルから読込むかすると良いです。


コメント