Microsoft Form Update System

时间:2017-10-05 18:12:00

标签: vba forms access-vba

我正在为MS Access的多个用户创建前端,如果需要进行任何更改,我已经想出了一种更新表单的方法。基本上我的VBA代码将做的是删除旧表单并导入新表单(如果有的话)(大约10个表单)。

我的流程存在一个问题...每次导入新表单时,都会要求用户接受安全警告,当有这么多表单时它会变得很烦人,有时可能是一个漫长的过程每次导入时都要等待每个导入并单击“接受”。

有更合理的方法吗? Access是否具有内置功能,可以检测表单的任何更改并根据单独的数据库进行更新?

Private Function PullNewForms()

    DoCmd.TransferDatabase acImport, "Microsoft Access", _
                           "LOCATION", _
                           acForm, "frmLogin", "frmLogin"
    DoCmd.TransferDatabase acImport, "Microsoft Access", _
                           "LOCATIONb", _
                           acForm, "frmNewUser", "frmNewUser"
    DoCmd.TransferDatabase acImport, "Microsoft Access", _
                           "LOCATION", _
                           acForm, "frmOptionsMenu", "frmOptionsMenu"
    DoCmd.TransferDatabase acImport, "Microsoft Access", _
                           "LOCATION, _
                           acForm, "frmResetPassword", "frmResetPassword"
    DoCmd.TransferDatabase acImport, "Microsoft Access", _
                           "LOCATION", _
                           acForm, "frmVendorMainForm", "frmVendorMainForm"

End Function

这可以合并为一行代码吗?

1 个答案:

答案 0 :(得分:3)

重新考虑此当前设置。您不应该像这样导入像表单报告,甚至模块这样的应用程序对象,因为可能会发生损坏和崩溃。您需要在用户群中使用更稳定的版本控制系统。只能真正导入数据。

将MS Access FrontEnd应用程序部署到多个用户时请考虑以下事项:

  1. 为每个用户提供他们自己的FrontEnd以在本地计算机上运行。
  2. 将Master FrontEnd保留在共享网络上,他们可以访问但永远不会直接使用,仍保持拆分架构:

    Split Architecture Diagram

  3. 为每个用户提供他们自己的批处理文件(.bat),他们可以从他们的桌面双击或在任何地方复制最新的Master FrontEnd以替换他们的旧版本。

  4. 为您自己,开发人员,开发的FrontEnd副本,在测试和调试并准备部署到生产环境中时,您将替换为新的Master FrontEnd。这很难,但是尽管您可能会覆盖自己的更改,但是尽量不要在主副本或本地副本中进行更改。
  5. 最后,随着每个新表单/报表/宏/模块的更改,请通知每个用户新的可用FrontEnd,并让他们只需单击其批处理文件即可替换以前的版本。
  6. 批量文件

    (将以下文本保存在记事本中,但保存为.bat文件,而不是默认的.txt文件,该文件自动使其成为带有齿轮图标的双击可执行脚本。为每个用户提供自己的批处理文件,相应地定制本地路径,保存到他们的桌面或他们的FrontEnd所在的位置)

    @echo off
    
    Copy "\\Server\Path\To\MasterFrontEnd.accdb" "C:\User\JaneDoe\LocalFrontEnd.accdb" /Y
    
    start "" cmd /c "echo UPDATE COMPLETE!&echo(&pause"