Access 前端鏈接 SQL Server 後端時,連接屬性(DSN/UID/PWD/Database)變更需批量刷新 TableDef。
Function RelinkSQLTables()
Dim db As DAO.Database, td As DAO.TableDef
Dim uid As String, pwd As String, dbName As String
uid = "sa" : pwd = "abc" : dbName = "abcde"
Set db = CurrentDb
For Each td In db.TableDefs
If td.Attributes = dbAttachedTable Then ' 536870912
td.Connect = "FILEDSN=d:\demo\steel.dsn;UID=" & uid & ";PWD=" & pwd & ";DATABASE=" & dbName & ";Network=DBMSSOCN"
td.Attributes = dbAttachSavePWD ' 持久化密碼
td.RefreshLink
End If
Next
End Function
td.Attributes = dbAttachedTable:識別鏈接表(非本地表)FILEDSN=...:文件 DSN 路徑,避免機器 DSN 依賴Network=DBMSSOCN:指定 TCP/IP 網絡庫(SQL Server 專用)dbAttachSavePWD:將密碼加密存入連接字符串,免用戶反覆輸入