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

スポンサーリンク

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

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

開発環境:win7 + access2010 + MySQL

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


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

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

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

<VBA>
[vb]
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
[/vb]

各PCでODBC設定は別途必要です。
ODBCのDSN名等を定義しておくかiniファイルから読込むかすると良いです。

スポンサーリンク
広告
広告

フォローする