我有一个 Access ADP 项目,该项目在过去 6 年中一直是一个连续项目,因此它有数百个表单和 thosands 行的 VBA 代码。在最近的更新之后,它不会编译来创建 ADE 文件。它告诉我其中一个文本框不存在,但确实存在。我删除了 for 并从工作备份中重新导入它,但仍然是同样的错误。我尝试将整个项目导入新的 ADP 文件,但仍然无法编译,尝试压缩和修复以及 /decompile
有没有人没有任何技巧或软件包来帮助解决这个问题?
我有一个 Access ADP 项目,该项目在过去 6 年中一直是一个连续项目,因此它有数百个表单和 thosands 行的 VBA 代码。在最近的更新之后,它不会编译来创建 ADE 文件。它告诉我其中一个文本框不存在,但确实存在。我删除了 for 并从工作备份中重新导入它,但仍然是同样的错误。我尝试将整个项目导入新的 ADP 文件,但仍然无法编译,尝试压缩和修复以及 /decompile
有没有人没有任何技巧或软件包来帮助解决这个问题?
我不使用 ADP,但在 MDB 中,这两种用于引用表单控件的语法之间存在差异:
Me.MyControl
Me!MyControl
第一个导致 Access 创建一个返回控件的隐藏属性。其结果是对控件的引用进行编译时检查。
第二种使用当前表单的默认集合,不提供编译时检查。
我假设 VBA 在 ADP 中的工作方式与在 MDB 中的工作方式相同,那么为什么不尝试将有问题的控件引用转换为 bang 而不是 dot 呢?这将消除编译时检查,并可能允许项目编译而不必费力地重建它。
如果可行,我想我会尝试删除控件(以删除隐藏的属性定义)并使用新名称添加控件然后压缩(我不知道是否可以反编译 ADP,但如果可以,它也应该被反编译)。从理论上讲,这应该永久删除有问题的隐藏属性定义,如果这是问题的原因,您应该能够恢复到点运算符并返回编译时检查。
For what it's worth, I've seen too many corruption problems with the dot operator and always use the bang in all my projects. I'm OK with not having compile-time checking of control references.
And, oh, BTW, with the bang you lose automatic Intellisense (which in some cases is a blessing as Intellisense can get in your way in some contexts), but you can invoke a different Intellisense list with CTRL-SPACE. This list is not limited to the control type, but once you start typing, you get the usual autocomplete that jumps you to the appropriate location in the list.
有时它有助于开始一个新的空项目,然后从旧项目中导入所有表单/报告/模块。
如果 biger 的方法不起作用,请考虑使用 SaveAsText 方法保存每个模块。然后,正如 birger 建议的那样,导入,但只导入表格和表格。然后,使用 LoadFromText 方法重新创建模块。
Sometimes, I found out that I need to manual click Debug -> Compile
before making ADE files.
This following steps may help for unable-compile ADP file: