Accessリンクテーブル設定をVBAで行う方法

リンクテーブルをVBAで行う方法

私は以下の方法でやっています。

開発環境:win7 + access2010 + MySQL

 

<テーブル>
link_tbl
tbl_name データ型:テキスト型


→link_tblというのをAccessのローカルテーブルに作成します。(実テーブル)
項目はtbl_nameでデータ型はテキストで、主キー設定は不要です。

 

<フォーム>
リンク設定ボタン

→メニュー画面を作成しリンク設定ボタンを追加します。
 そのボタンクリックイベントをVBAで記述します。

 

<VBA>

'---
Private Sub cmdリンク設定ボタン_Click()
    If funSetConnect("link_tbl") = True Then
        MsgBox "リンク設定が正常に終了しました。", vbInformation + vbOKOnly, "リンク設定"
    End If
End Sub

'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

'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ファイルから読込むかすると良いです。

コメント

タイトルとURLをコピーしました