我有一个应用程序在通过无线网络访问 MDB 数据库时遇到问题。
一个快速的解决方案是在所有工作站上都有一个本地 MDB 文件,将其所有表链接到 SQL Server 数据库?
这是否是一种避免在应用程序中重新编写所有数据访问代码的方法?
我有一个应用程序在通过无线网络访问 MDB 数据库时遇到问题。
一个快速的解决方案是在所有工作站上都有一个本地 MDB 文件,将其所有表链接到 SQL Server 数据库?
这是否是一种避免在应用程序中重新编写所有数据访问代码的方法?
是的,那会做得很好。我们有很多客户以这种方式联系在一起。
然而,这并不是一件容易的事。不确定所需的所有努力是否能收回成本。
而且你有一些新的维护和部署问题。
要遵循的步骤是这样的:
1)将您的表迁移到 SQLServer
2)创建一个 ODBC 数据源,用于连接到您的后端数据库
3)连接您的表
4)重命名您连接的表以删除架构限定符(例如“dbo_”),以便您的链接表的名称与以前相同。
现在是时候测试所有代码了。
希望你不必重写任何东西。
真正的问题在于您需要创建与原始数据源匹配的 ODBC 数据源的客户端 PC。此外,如果您重新分发您的前端数据库,您可能必须重新连接来自客户端 PC 的所有表。您需要调用这样的函数:
Public Function UpdateODBCTables() As Boolean
On Error GoTo Exit_On_Error
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim sDSN As String
Dim sDB As String
Dim sComputer As String
Dim sDesc As String
Dim sApp As String
Dim strConnect As String
sDSN = "YOUR_DSN_NAME"
sDB = "YOUR_DATABASE_NAME"
sComputer = "YOUR_COMPUTER_NAME"
sApp = "YOUR_APP_NAME"
sDesc = "DESCRIPTION_OF_YOUR_APP"
strConnect = "ODBC;DSN=" & sDSN & ";" & _
"DATABASE=" & sDB & ";" & _
"WSID=" & sComputer & ";" & _
"TrustedConnection=Yes;" & _
"Description=" & sDesc & ";" & _
"APP=" & sApp ";"
Set dbs = CurrentDb
' Loop over tabledefs of ODBC type and reconnect
For Each tdf In dbs.TableDefs
If tdf.Connect <> "" And Left(tdf.Connect, 4) = "ODBC" And Left(tdf.Name, 1) <> "~" Then
tdf.Connect = strConnect
tdf.RefreshLink
End If
Next
dbs.TableDefs.Refresh
UpdateODBCTables = True
Exit_On_Return:
Set dbs = Nothing
Exit Function
Exit_On_Error:
MsgBox Err.Description, vbCritical, "YOUR_MESSAGE_TITLE"
Resume Exit_On_Return
End Function