历史记录:我继承了一个使用MS Access编写的相当大的应用程序,其中包含大量表单,查询和报告。因为看起来这些项目中的一些被复制作为备份它们的一种方式,我不知道它们是否真的在任何地方使用过。
问题:我正在开始清理应用程序的过程,需要一种方法来查找是否以及在何处使用表单,报告或查询,以便我知道是否可以删除或重构它们。 Access是否有一种很好的方法可以搜索表单/报告名称的按钮事件?
(访问'查找功能似乎只找到记录,除非我错过了设置)
修改 - 解决方案:
1。)正如下面的答案和评论中所提到的,通过创建一个新的Access文件然后按表单进行表单,从登录屏幕开始,并查看缺少的内容,重建应用程序将是一个宝贵的教训。 。这将提供对整个应用程序的深刻见解。
2.)我发现this post讨论了使用“数据库文档管理器”来转储与给定表单中使用的对象,VBA等相关的所有信息。生成的文本文件可以轻松搜索到使用单个特定查询,报表或表单。它不会为我提供与重建整个应用程序相同的知识水平,但对于有针对性的知识/可能的清理来说,这是一个很好的权宜之计。
答案 0 :(得分:2)
假设你有一个名为frmOne的表单,它有一个命令按钮,代码隐藏为:
DoCmd.OpenReport "rptFoo"
rptFoo使用qryFoo作为记录源。
启用Track Name自动更正,然后查看frmOne的Object Dependencies不会通知您frmOne需要rptFoo。但是它可以告诉你rptFoo需要qryFoo。另一个问题是对象依赖关系不会通知你frmOne已被弃用---当前版本是frmTwo。
同样地,使用Application.SaveAsText
为数据库对象创建文本文件,然后greting文本文件不会告诉你frmOne已被弃用。
您可以尝试使用其他方法来确定需要哪些数据库对象。创建一个新的数据库文件。从旧数据库导入启动表单。打开新数据库,然后使用表单识别所需的缺失项目。导入那些。泡沫,冲洗,重复。
如果应用程序不是从启动表单驱动的,请询问用户使用哪些表单和报表,然后导入它们。
这种方法很繁琐,可能需要几个小时。但是,我怀疑其他方法会快得多。从好的方面来说,您几乎可以保证不会将不需要的对象导入新数据库。如果您遗漏了所需的任何内容,可以从保存的旧数据库副本中导入。
答案 1 :(得分:0)
这可能是使用“轨道名称自动更正”的情况,启用此选项可以跟踪对象依赖项。
使用VBA检查表单引用的代码和事件绝不是不可能。
答案 2 :(得分:0)
我继承了一个具有20多个mdb前端的应用程序,其中一些使用其他文件中的查询。除了Remou提到的解决方案之外,我还使用此script的变体将所有表单,查询和报告导出到文本文件,然后通过它们来检查是否使用了该对象。
它并不完美,但它也允许我检查mdbs之间的依赖关系 - 我不确定你是否可以使用内置工具执行此操作。当我编写它时,我可能一直患有NIH。
您可能还想查看mz-tools哪些工具可以找到未使用的代码。
答案 3 :(得分:0)
有一个小的加载项,免费且有用vtools,除了其他可能性之外,还特别允许您在所有访问对象(表,查询,代码,表单,...中)搜索值或引用。 )。
答案 4 :(得分:0)
很容易。
进入VBA代码编辑器(在某处找到View Code) 按CTRL + F以查找查找选项,然后单击“搜索项目”
因此,如果您浏览表单并报告名称,您将能够以编程方式每次都找到它们。这不能用于查找是否使用了查询,因为您需要数据库文档管理器。