远程链接access数据库_如何更改后端数据库链接。 (Access 2003)

远程链接access数据库

我敢肯定你们中的许多人都使用后端和前端数据库。 后端保存所有表,前端保存所有代码。

如果您正在开发多用户系统,则可能遇到与我相同的问题。 作为开发人员,我的前端和后端以及mdw安全文件位于C:驱动器上。

然后,最终用户需要后端,以及Z:驱动器(或H:或其他驱动器)上的安全文件。

每次发出新代码时,都有数十个表要交换,因此我需要自动执行此操作,因此我编写了以下代码。

这在Access 2000和2003中有效,但对于Access 2010不确定。

首先,我有一个简单的表单“ fdlgDropAll”,它具有两个选项。

它允许我删除所有附加表,也可以将附件从一个驱动器更改为另一个驱动器。

此表单有3个文本框显示

实时代码的路径

实时数据的路径

mdw的路径

然后点击“全部删除”按钮

和3盒要

驱动实时数据

驱动实时代码

直播MDW

最后是激活更改的按钮,然后是关闭按钮。

好的,它如何运作?

首先,我有一个名为basConstants的模块,该模块除其他事项外还存储各种文件的预期路径。 这是在启动时使用的,这样我就不会意外地将数据库指向错误的文件发送到非洲或印度。

basConstants拥有以下内容


Option Compare Database
Option Explicit 
Global Const LIVECODE = "c:\bissau\BissauCode.mdb"
Global Const LIVEDATA = ";DATABASE=z:\Bissau\BissauData.mdb"
Global Const LIVEMDW = "z:\bissau\bissau.mdw" 

在表单的打开事件中,我有以下内容


Private Sub Form_Open(Cancel As Integer)
On Error GoTo Form_Open_Err
LCode = LIVECODE
LData = LIVEDATA
LMDW = LIVEMDW
Form_Open_Exit:
   Exit Sub
Form_Open_Err:
   MsgBox Err.Description & " in Form_Open"
   Resume Form_Open_Exit
End Sub 
这样便打开了表单,显示了当前链接。

下一个

DropAll非常简单,它将删除所有链接到附加表的链接,这是它的代码。


Private Sub cmdDropAll_Click()
On Error GoTo cmdDropAll_Click_Err
Dim db As Database
Dim td As TableDef
Dim i As Integer, j As Integer, var As Variant 
Dim strAttach As String
Set db = CurrentDb
For i = 0 To db.TableDefs.Count - 1
    Set td = db.TableDefs(i)
    strAttach = td.Connect
    If Len(strAttach & "") > 0 Then
        db.Execute "DROP TABLE " & td.Name & ";"
    End If
Next
Set td = Nothing
Set db = Nothing
MsgBox "All Tables Dropped"
cmdDropAll_Click_Exit:
   Exit Sub
cmdDropAll_Click_Err:
  MsgBox Err.Description & " in cmdDropAll_Click"
   Resume cmdDropAll_Click_Exit
End Sub 
下一个

现在好了,重新连接到另一个驱动器。 这是“激活更改”


Private Sub cmdChangeDrive_Click()
On Error GoTo cmdChangeDrive_Click_Err
Dim db As Database
Dim td As TableDef
Dim i As Integer, j As Integer, var As Variant
Dim strAttach As String
Dim strNewAttach As String
Dim strNewCode As String
Dim strNewMDW As String 
Dim mdl As Module
Dim intLine As Integer, strLine As String 
strNewCode = NewLiveCode & Right(LCode, Len(LCode) - 1) 
strNewAttach = Left(LData, 10) & NewLiveData & Right(LIVEDATA, Len(LIVEDATA) - 11) 
strNewMDW = NewLiveMDW & Right(LMDW, Len(LMDW) - 1) 
        DoCmd.OpenModule "basConstants"
        ' Return reference to Module object.
        Set mdl = Modules("basConstants") 
        For intLine = 1 To mdl.CountOfDeclarationLines
        strLine = mdl.Lines(intLine, 1)
        If InStr(strLine, "LIVECODE") > 0 Then
            mdl.ReplaceLine intLine, "Global Const LIVECODE = " & Chr(34) & strNewCode & Chr(34)
        End If
        If InStr(strLine, "LIVEDATA") > 0 Then
            mdl.ReplaceLine intLine, "Global Const LIVEDATA = " & Chr(34) & strNewAttach & Chr(34)
        End If
        If InStr(strLine, "LIVEMDW") > 0 Then
            mdl.ReplaceLine intLine, "Global Const LIVEMDW = " & Chr(34) & strNewMDW & Chr(34)
        End If
        Next
        DoCmd.Close acModule, "basConstants", acSaveYes
Set db = CurrentDb
For i = 0 To db.TableDefs.Count - 1
    Set td = db.TableDefs(i)
    strAttach = td.Connect
    If Len(strAttach & "") > 0 Then
        td.Connect = strNewAttach
        td.RefreshLink
    End If
Next
Set td = Nothing
Set db = Nothing
MsgBox "All Tables Changed"
cmdChangeDrive_Click_Exit:
   Exit Sub
cmdChangeDrive_Click_Err:
   MsgBox Err.Description & " in cmdChangeDrive_Click"
   Resume cmdChangeDrive_Click_Exit
End Sub 
因此,这种简单的形式使我可以快速将c:驱动器开发代码更改为多用户Z:驱动器代码,而无需手动删除数十个表并重新链接,而不必忘记一个表,或者删除一个本地表表。 我必须每周在多个数据库上执行2-3次任务。

希望明天我可以附加一个示例数据库,其中包含所有代码。

同样,这是用Access 2003编写的。

附带的是一个Access 2003数据库,其格式为fdlgDropAll,其中包含上面的所有代码。

附加的文件
文件类型:zip LinkingCode.zip (20.6 KB,349视图)

翻译自: https://bytes.com/topic/access/insights/908482-how-change-backend-database-links-access-2003-a

远程链接access数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值