我需要将Access数据宏从我的测试数据库传输到我的生产数据库。有谁知道怎么做?
我知道将表从一个accdb转移到另一个accdb也会传输数据宏,但在我的情况下这不是一个选项。我也知道我可以在生产accdb中手动重新创建它们,但这使我容易出错,并且需要将生产数据库关闭的时间比脚本传输方案要长。
如果我只需要这样做就不会那么重要,但我需要在开发项目的过程中多次这样做。
我已经尝试将表导出到xml,但不包括数据宏。
请注意,我在这里询问Access 2010 数据宏,而不是常规的Access宏。
答案 0 :(得分:8)
您可能想尝试一对未记录的VBA函数
要导出:
SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
要导入:
LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
答案 1 :(得分:5)
为了扩展Martijn Pieters'/ Lanik的答案(感谢Martijn和Lanik),我需要在28个不同的表上创建几乎相同的数据宏,每个表都有AfterInsert,AfterUpdate,AfterDelete和命名数据宏。所以,我使用了SaveAsText命令
SaveAsText acTableDataMacro,“TableName”,“C:\ PathToFile \ DataMacro.xml”
创建一个模板,然后使用该模板通过一个小的vba代码创建28个xml文件,替换表名,主键等。我还创建了28个LoadFromText命令。然后,我可以使用LoadFromText命令一次加载所有宏,并使用可重复的过程。现在我已经完成了测试,我可以通过这种方式快速更新生产数据库,或者轻松地将相同的数据宏添加到其他表中。
所以其他人都知道,LoadFromText会覆盖以前的所有宏,这是非常棒的,因为我第一次尝试时没有正确的模板。
鉴于上述情况,下一步是让'updater'数据库应用程序使用DoCmd.TransferDatabase命令将带有函数/ sub的模块与所有LoadFromText命令一起传输到Data .accdb。它还应该传输一个宏来运行函数/ sub。我尝试使用我的更新程序然后执行宏来加载数据宏,但访问安全性阻止了这一点。所以,您可能需要让用户打开数据库并启用它,然后运行宏。如果我们可以直接编辑数据宏,那么这会更复杂,但确实提供了解决问题的解决方法。
答案 2 :(得分:3)
我在这里没有很好的答案。
然而,在过去,我经常制作一份表格更改的“日志”,然后在网站上简单使用。
请注意您可以剪切+粘贴宏代码。代码保存为XML。
例如,更新后的表触发器在Access中如下所示:
如果您剪掉上面的内容(ctrl-a,ctrl-cc),那么您可以将其粘贴到记事本中。实际上你甚至可以在visual studio或任何xml编辑器中粘贴/打开它,你会看到:
所以你可以从那些宏中剪切+粘贴。
如上所述,因此在过去我经常记录变化的“日志”。
因此,如果我在网站外工作,我修改了2个代码模块,4个表单和2个报告,那么我有一些变化记录。我会在这张表中输入更改的对象。
当我到达现场时,我快速浏览一下该表,我知道要导入3-5个对象,这样的导入仅需几分钟。
但是,使用表触发器和存储过程,您可以拥有更多只需要复制的内容。
我会做两件事之一:
使用日志创意和
a)取消发布开发版本并将其带到您的工作站点。然后导入新表格,报告等。 对于触发器代码,您可以在两个应用程序之间剪切+粘贴。
b)当你对触发器进行更改时,然后剪切+粘贴到记事本文档中并将它们放在目录中。在现场时,只需将每个记事本,剪切+粘贴到生产中,然后将记事本项目移动或复制到“完成”文件夹中。
以上肯定不太理想。然后在过去我并不总是有代码来编写表格更改脚本,并且使用一个小的日志表工作得很好。
所以在过去我经常写下这样的表格已被修改,我必须添加这样的专栏。
所以你真的可以选择是否要将宏代码作为xml剪切+粘贴到单独的小文档中,或者从开发中剪切+粘贴到生产中。
我确实认为如果你在不同的位置工作,那么我认为最好取消发布开发版本,并随身携带(我假设您知道/重新确认您可以制作未发布的副本网络应用程序)。
因此,只需导入表单,代码模块,宏等(您可以删除表单等,只需从未发布的副本导入)。
但是,对于表格代码?您必须一次从未发布的副本中剪切+粘贴到某个临时区域,或者在应用程序之间剪切+粘贴。
有可能保存为文本可能在这里工作,但我还没有时间做出更好的解决方案。
编辑: 顺便说一句,在上面我假设了一个Web服务数据库,但该建议仍然适用于非Web Access数据库。
答案 3 :(得分:0)
我遇到了同样的问题,因为无法找到正确的宏以便以xml格式导出。但是我能够右键单击我的查询并以这种方式导出到xml,所以我知道它是可能的。
但是我希望它从按钮运行,我发现了一种简单的方法,无需编写任何vba代码。
首先需要手动导出表或查询,方法是右键单击表或查询并选择export并选择xml作为文件类型。最后,您可以保存导出步骤,只需勾选该框以保存步骤并为导出步骤指定相应的名称。完成此操作后,您可以使用RunSavedImportExport操作通过宏运行导出步骤。只需选择手动导出时创建的已保存导出的名称。任务完成。希望这有助于其他人。
答案 4 :(得分:0)
右键单击宏并选择Export
,然后选择要接收宏的数据库。