Ms access 在开发期间,在给定数据库投入生产时取消引用

Ms access 在开发期间,在给定数据库投入生产时取消引用,ms-access,ms-access-2010,Ms Access,Ms Access 2010,发展“陷阱” 事实上,这些考虑/事情比真正的“gotchas”更值得记住: 如果从引用库数据库的数据库中编辑类或模块,则在关闭正在使用的数据库后,将立即丢失编辑 您可以从正在使用的数据库中尝试编辑-代码将运行,但不会保存 我经常打开记事本++或OneNote,以便将我正在测试的代码复制粘贴到库数据库中。这样,我可以继续在其他领域工作,并进行一系列更改以更新库数据库 - Compile the library database before using its components in the

发展“陷阱”

事实上,这些考虑/事情比真正的“gotchas”更值得记住:

如果从引用库数据库的数据库中编辑类或模块,则在关闭正在使用的数据库后,将立即丢失编辑

您可以从正在使用的数据库中尝试编辑-代码将运行,但不会保存

我经常打开记事本++或OneNote,以便将我正在测试的代码复制粘贴到库数据库中。这样,我可以继续在其他领域工作,并进行一系列更改以更新库数据库

- Compile the library database before using its components in the referencing database
这更像是一个工作流问题-确保在库数据库中保存和编译,然后在完成更改并首先关闭库数据库后打开引用数据库

资源

以下是一些证明有用的链接:

第六篇参考文献(仅通过互联网档案馆提供)在整理如何正确实例化类方面特别有用。最后,我选择创建一个工厂类(静态类),其中包含多个函数(每个类一个-例如,
NewClassABC()
),在公共参考库数据库中实例化该类

- Compile the library database before using its components in the referencing database
到目前为止,一切顺利

参考库数据库将代码放在一个地方,其他协议数据库可以根据需要更新。不处理同一模块或类的多个副本和版本


希望这有助于其他人寻找“通用”库类型的解决方案。

这个问题肯定会引起自以为是的回答,因为没有“金标准”,这在很大程度上取决于你在做什么。我自己也有一个链接数据库设置,我使用自动化将模块推到前端。如果你想阻止用户编辑你的类模块,你可以锁定它们以便查看,并在完成后使用密码保护它们(注意:这不是真正安全的,但也不是链接它并将其添加为引用)。Erik,谢谢你的评论——事实上,我很乐意有自己的答案——我们都有自己的发展趋势;)你能放大或添加一个链接到你是如何进行自动化推送的吗?这些问题在StackOverflow上是离题的。可以在中找到使用的一些代码(删除代码以创建新文件,以及删除不希望推送的任何对象的代码)。在我的设置中,我实际上使用了一个表单,它列出了文件夹中的所有前端以及所有表、查询、表单、模块等,并允许我选择要推送的内容。如果这个问题明天还在这里,我可能会与大家分享完整的代码(到时候有更多的时间)。谢谢Erik。看看上面提到的代码,引用的“推送”更多的是将模块/类放在前端,这不是我想要的,但我愿意看看您是如何使用它的。我可能会发现它实际上比我想象的要好——我试图解决的根本问题是公共代码的扩散,因此出现了公共数据库。没有足够的空间最后一点:我不同意这个问题属于“离题”(off-topic)的想法。虽然主观的,但有希望的是,从这些真实的经验中得到的回答足够详细,使得这个问题像这里的“良好的主观”线索一样有价值:实际上,对于许多开发问题有不同的解决方案。在这种情况下,简单地尝试确定哪一个是最佳的约束条件&其他人的经验。我可以做任何一个,但有些会是更好的选择。干杯另一个缺点是,代码未编译。它可能会运行(你会知道,我还没有尝试过这个方法),但仍然。@Gustav你是对的,但我从未在实际使用中遇到过由它引起的错误。但是,您不应该立即从导入的模块(在同一个子模块中)运行函数,因为
DoCmd.DeleteObject
会以某种方式延迟,会创建模块的副本,然后模块仍会被删除,但名称后面附加有
1
的副本会存在,并且在下次导入时,由于函数/类/子名称不明确,您将有2个模块和编译错误。但由于您直接从autoexec宏调用sub,这纯粹是假设。谢谢Erik和Gustav。这是一个有趣的选择。该实现是否在网络上有多个用户的分布式系统中(网络上的公共数据库,用户将代码拉到本地数据库)?当网络关闭或笔记本电脑(例如)离线时,dbs会工作吗?@NWdev我在一个数据库上同时有5-10个用户的网络中使用它,但网络上有1000多个用户在做不同的事情(一个大公司网络)。但是,链接表将是您的问题,而不是链接代码。该代码在启动数据库时被提取,并在启动后脱机可用。链接的表不会出现错误(WiFi上的链接表可能会导致错误)。但是,您可以通过相同的方法拉取未链接的表,然后可以脱机使用数据库,但它是单向流,因此无法提交对这些表的更改。此外,如果源数据库不可用,代码当前会引发运行时错误,但是,您可以通过在
.OpenRecordset
之前添加
On error Resume Next
来轻松抑制该错误,然后数据库将与以前导入的模块一起脱机工作(并在网络连接启动后立即拉入新模块)