【问题标题】:how to export Access 2010 data macros如何导出 Access 2010 数据宏
【发布时间】:2012-03-01 15:29:48
【问题描述】:

我需要将 Access 数据宏从我的测试数据库传输到我的生产数据库。有人知道该怎么做吗?

我知道将表从一个 accdb 传输到另一个也会传输数据宏,但这不是我的选择。我也知道我可以在生产 accdb 中手动重新创建它们,但这让我容易出错,并且需要将生产数据库关闭比脚本传输场景更长的时间。

如果我只需要这样做一次就没什么大不了了,但在开发项目的过程中我需要多次这样做。

我已尝试将表格导出为 xml,但未包含数据宏。

请注意,我在这里询问的是 Access 2010 数据宏,而不是常规的 Access 宏。

【问题讨论】:

    标签: ms-access macros ms-access-2010 ms-access-data-macro


    【解决方案1】:

    您可能想尝试一对未记录的 VBA 函数

    要导出:

    SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
    

    要导入:

    LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
    

    【讨论】:

      【解决方案2】:

      为了扩展 Martijn Pieters/Lanik 的回答(感谢 Martijn 和 Lanik),我需要在 28 个不同的表上创建几乎相同的数据宏,每个表上都有一个 AfterInsert、AfterUpdate、AfterDelete 和命名数据宏。所以,我使用了 SaveAsText 命令

      SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"

      创建一个模板,然后使用该模板通过一些 vba 代码创建 28 个 xml 文件,替换表名、主键等。我还创建了 28 个 LoadFromText 命令。然后我可以使用 LoadFromText 命令一次加载所有宏,过程可重复。现在我已经完成了测试,我可以通过这种方式快速更新生产数据库或轻松地将相同的数据宏添加到其他表中。

      所以其他人都知道,LoadFromText 会覆盖之前的所有宏,这太棒了,因为我的模板在第一次尝试时没有正确。

      鉴于上述情况,下一步是让您的“更新程序”数据库应用程序使用 DoCmd.TransferDatabase 命令将模块与具有所有 LoadFromText 命令的函数/子传输到 Data .accdb。它还应该传输一个宏来运行函数/子。我尝试让我的更新程序然后执行宏来加载数据宏,但 Access 安全性阻止了这一点。因此,您可能需要让您的用户打开数据库并启用它,然后运行宏。如果我们可以直接编辑数据宏,这会更加复杂,但确实提供了解决问题的解决方法。

      【讨论】:

      【解决方案3】:

      我在这里没有很好的答案。

      然而,在过去,我经常对表格进行更改的“日志”,然后在现场简单地使用它。

      请注意,您可以剪切 + 粘贴宏代码。并且代码保存为 XML。

      例如,更新后的表触发器在 Access 中如下所示:

      如果你剪掉了上面的(ctrl-a,ctrl-cc),那么你可以将它粘贴到记事本中。事实上,你甚至可以在 Visual Studio 或任何 xml 编辑器中粘贴/打开它,你会看到:

      所以你可以剪切和粘贴这些宏。

      如前所述,因此在过去我经常保留更改的“日志”。

      因此,如果我在异地工作并修改了 2 个代码模块、4 个表单和 2 个报告,那么我有一些更改日志。我会在这张表中输入更改的对象。

      当我到达现场时,我快速浏览了那张表,我知道要导入 3-5 个对象,这样的导入只需几分钟。

      但是,使用表触发器和存储过程,您可以复制更多内容。

      我会做以下两件事之一:

      使用日志思想和

      a) 取消发布开发版本并将其带到您的工作站点。然后您导入新的表格、报告等。 对于触发代码,您可以在两个应用程序之间剪切 + 粘贴。

      b) 当您对触发器进行更改时,然后剪切 + 粘贴到记事本文档中并将它们放在目录中。在现场,只需拿起每个记事本,剪切并粘贴到生产环境中,然后将记事本项目移动或复制到“完成”文件夹中。

      上述情况肯定不太理想。再说一次,在过去,我并不总是有代码来编写表格更改的脚本,并且使用一个小日志表效果很好。

      所以过去我经常只是写下某某表被修改了,我必须添加某某列。

      因此,您可以选择将宏代码作为 xml 剪切+粘贴到单独的小文档中,还是直接从开发中剪切+粘贴到生产中。

      我确实认为,如果您在不同的位置工作,那么我认为最好取消发布开发版本,并随身携带(我假设您知道/意识到您可以制作一个未发布的副本网络应用程序)。

      所以表单、代码模块、宏等可以很容易地导入(您删除表单等,然后从未发布的副本中导入)。

      但是,对于表格代码呢?您必须从该未发布的副本中一次剪切 + 粘贴到某个暂存区域,或者如前所述在应用程序之间剪切 + 粘贴。

      另存为文本可能会在这里工作,但我还没有时间制定更好的解决方案。

      编辑: 顺便说一句,在上面我假设了一个 Web 服务数据库,但该建议仍然适用于非 Web Access 数据库。

      【讨论】:

      • 感谢您抽出宝贵的时间和阿尔伯特的所有细节。 XML 信息非常有用。 Ctrl-C、Ctrl-V 也非常好用。根据您的声誉,我将此作为福音答案。再次感谢
      【解决方案4】:

      我遇到了同样的问题,即无法找到正确的宏以便以 xml 格式导出。但是我能够右键单击我的查询并以这种方式导出到 xml,所以我知道这是可能的。

      但是我希望它通过一个按钮运行,我找到了一种无需编写任何 vba 代码的简单方法。

      您首先需要通过右键单击表或查询并选择导出并选择 xml 作为文件类型来手动导出表或查询。最后,您可以保存导出步骤,只需勾选框以保存步骤并为导出步骤指定适当的名称。完成此操作后,您可以使用 RunSavedImportExport 操作通过宏运行导出步骤。只需选择您在手动导出时创建的已保存导出的名称。任务完成。希望这对其他人有所帮助。

      【讨论】:

      • 仅供参考:数据宏不包含在 XML 中 - 我只是在 Access 2013 上尝试过。
      【解决方案5】:

      右键单击宏并选择Export,然后选择要接收宏的数据库。

      【讨论】:

      • 我知道这适用于导航窗格中列出的常规宏,但它是否也适用于数据宏,例如更改前、插入后...? (我认为不会。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多