001:Access:外部テーブルリンクの更新

 Aceessデータベーステーブルの外部リンクの接続を変更します。 テスト用サンプルでは、アプリケーションと同じフォルダにあるデータベースに接続するようにしました。プログラムをインストールする際にアプリケーション本体と、データベースファイルを同じフォルダに入れておけば、フォルダ構成が変わっても、自動的にリンクを変更できます。


Option Compare Database

'
'+-----------------------------------------------------------
' リンクテーブル変更 Version 1.00 (2017.02.13)
' Sub SetLinkTable(ff As String, tbname As String)
'+-----------------------------------------------------------
' 機能:リンクテーブルの外部リンク先を変更する
'+-----------------------------------------------------------
'  Input:
'       ff      --->    データベースファイル名
'       tbname  --->    テーブル名称
'  Output:
'       戻り値  --->    0:成功  1:失敗
'+-----------------------------------------------------------
Function SetLinkTable(ff As String, tbname As String)
Dim db As DAO.Database
Dim tb As DAO.TableDef

    On Error GoTo ERR00
    
    Set db = CurrentDb
    Set tb = db.TableDefs(tbname)

    tb.Connect = ";DATABASE=" & ff & ";TABLE=" & tbname
    tb.RefreshLink

    db.Close
    
    SetLinkTable = True
    Exit Function

ERR00:
    SetLinkTable = False
End Function


'**************************************************
'* Sub SetLinkTable_TEST()
'**************************************************
Sub SetLinkTable_TEST()
Dim rts As Integer
Dim dd As String
Dim ff As String
Dim tb As String

    dd = Application.CurrentProject.Path & "\"
    ff = dd & "vba_DB.accdb"
    tb = "tb売上"
    
    Debug.Print "DB : "; ff
    Debug.Print "TB : "; tb
    
    rts = SetLinkTable(ff, tb)
    Debug.Print rts
End Sub
記事(2017.02.13)