Access 前端 (.mdb/.accdb) 連結 SQL Server 後端資料表,當伺服器遷移、帳號變更或 DSN 異動時,需批次更新連結屬性。
Function RelinkSQLTables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim connStr As String
' 連線字串組裝 (檔案 DSN + 認證 + TCP/IP)
connStr = "FILEDSN=D:\Demo\Steel.dsn;UID=sa;PWD=abc;WSID=;DATABASE=MyDB;Network=DBMSSOCN"
Set db = CurrentDb
For Each tdf In db.TableDefs
' 536870912 = dbAttachedODBC (連結 ODBC 資料表)
If (tdf.Attributes And dbAttachedODBC) = dbAttachedODBC Then
tdf.Connect = connStr
tdf.Attributes = dbAttachSavePWD ' 儲存密碼避免重複提示
tdf.RefreshLink
End If
Next
Set tdf = Nothing
Set db = Nothing
MsgBox "SQL Server 連結資料表已更新完成"
End Function
FILEDSN:指向 .dsn 檔案路徑,含驅動、伺服器資訊。UID/PWD:SQL Server 登入帳密。DATABASE:預設資料庫名稱。Network=DBMSSOCN:強制使用 TCP/IP 網路庫 (而非 Named Pipes)。dbAttachSavePWD:將密碼加密儲存於連結定義中。WSID (Workstation ID) 可留空。ODBC;DRIVER=...;SERVER=...;DATABASE=...;UID=...;PWD=...。Form_Load 呼叫 RelinkSQLTables,實現啟動自動重連。On Error Resume Next / Err.Description) 記錄失敗資訊。一鍵重連解決方案,大幅降低 Access 前端部署與遷移的維護成本。