访问ADP Corrupt将无法编译

时间:2009-04-07 10:15:26

标签: ms-access vba ms-access-2007

我有一个Access ADP项目,在过去的6年中一直是一个连续项目,所以它有数百种形式和thosands系列的VBA代码。在最近的更新之后,它不会编译以创建ADE文件。它告诉我其中一个文本框不存在,但它确实存在。我删除了for并从工作备份重新导入它仍然是同样的错误。我尝试将整个项目导入到一个新的ADP文件中,仍然不会编译,尝试压缩和修复以及/反编译

有没有人没有任何技巧或软件包来帮助解决这个问题?

4 个答案:

答案 0 :(得分:2)

我不使用ADP,但在MDB中,这两种语法之间存在差异,用于引用表单上的控件:

  Me.MyControl
  Me!MyControl

第一个导致Access创建一个返回控件的隐藏属性。结果是编译时检查对控件的引用。

第二个使用当前表单的默认集合,不提供编译时检查。

我假设VBA在ADP中的工作方式与在MDB中的工作方式相同,那么为什么不尝试将有问题的控件引用转换为bang而不是dot?这将消除编译时检查,并可能允许项目编译而无需费力地重建它。

如果有效,我想我会尝试删除控件(删除隐藏的属性定义)并使用新名称添加控件然后压缩(我不知道ADP是否可以反编译,但是如果他们可以,它也应该被反编译)。从理论上讲,这应该永久地删除有问题的隐藏属性定义,如果这是问题的原因,您应该能够恢复到点运算符并获得编译时检查。

对于它的价值,我看到了点运算符的腐败问题太多,并且总是在我的所有项目中使用爆炸。我没有编译时检查控件引用。

而且,哦,BTW,随着爆炸,你失去了自动智能感知(在某些情况下,这是一种祝福,因为智能感知可以在某些情况下妨碍你),但你可以用CTRL-SPACE调用不同的智能感知列表。此列表不仅限于控件类型,但是一旦开始输入,您将获得通常的自动完成功能,可以将您跳转到列表中的相应位置。

答案 1 :(得分:1)

有时,启动一个新的空项目然后从旧项目导入所有表单/报表/模块会有所帮助。

答案 2 :(得分:0)

如果birger的方法不起作用,请考虑使用SaveAsText方法保存每个模块。然后,正如birger建议的那样,导入,但只有表格和表格。然后,使用LoadFromText方法重新创建模块。

答案 3 :(得分:0)

有时,我发现在制作ADE文件之前我需要手动点击Debug -> Compile

以下步骤可能有助于无法编译ADP文件:

  1. 调试 - >编译
  2. 紧凑/修复
  3. 然后制作ADE