首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

VBA 程式碼重新連結 ODBC 連結資料表至 SQL Server

     編輯:關於SqlServer

情境:Access 前端 + SQL Server 後端需動態更新連結

當 SQL Server 遷移、帳密變更、DSN 異動時,Access 連結資料表需重新指向。透過 VBA 自動化可批次處理所有連結表,避免手動逐一設定。

核心 VBA 函數:relink()

Function relink()
    Dim db As Database
    Dim tbl As TableDef
    Dim a As String, b As String, d As String

    a = "sa"          ' 資料庫使用者
    b = "abc"         ' 資料庫密碼
    d = "abcde"       ' 資料庫名稱

    Set db = CurrentDb
    For Each tbl In db.TableDefs
        ' 536870912 = dbAttachedODBC (ODBC 連結表屬性)
        If tbl.Attributes = 536870912 Then
            tbl.Connect = "FILEDSN=d:\demo\steel.dsn;UID=" & a & ";PWD=" & b & _
                          ";WSID=;DATABASE=" & d & ";Network=DBMSSOCN"
            tbl.Attributes = dbAttachSavePWD  ' 儲存密碼避免重複提示
            tbl.RefreshLink
        End If
    Next
End Function

連接字串參數解析 (微軟工程師 Billy Yao 說明)

  • FILEDSN:指向 .dsn 檔案路徑(含驅動程式、伺服器、資料庫等設定)。
  • UID / PWD:登入帳密,由變數動態帶入。
  • WSID:工作站識別碼,可留空。
  • DATABASE:預設資料庫名稱。
  • Network=DBMSSOCN:指定使用 TCP/IP 網路庫。

部署建議

  1. 將 .dsn 檔與 Access 前端放置相同相對路徑,或使用系統 DSN。
  2. 帳密勿硬編碼於程式碼,建議加密儲存於登入表或環境變數。
  3. 提供「重新連結」按鈕供使用者手動觸發,或於啟動時自動檢查連線狀態。

總結

此 VBA 範本可快速解決 Access 連結表批次重連問題,結合 DSN 檔管理與動態帳密帶入,是 Access/SQL Server 混合架構維護的實用工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved