【问题标题】:Access ADP Corupt wont compileAccess ADP Corrupt 无法编译
【发布时间】:2010-10-18 00:27:18
【问题描述】:

我有一个 Access ADP 项目,该项目在过去 6 年中一直是一个连续项目,因此它有数百个表单和数千行 VBA 代码。在最近的更新之后,它不会编译来创建 ADE 文件。它告诉我其中一个文本框不存在,但确实存在。我删除了 for 并从工作备份中重新导入它,但仍然是同样的错误。我已经尝试将整个项目导入到一个新的 ADP 文件中,但仍然无法编译,尝试压缩和修复以及 /decompile

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

【问题讨论】:

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


    【解决方案1】:

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

      Me.MyControl
      Me!MyControl
    

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

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

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

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

    不管怎样,我已经看到太多关于点运算符的损坏问题,并且总是在我的所有项目中使用 bang。我可以不用在编译时检查控件引用。

    而且,哦,顺便说一句,随着一声巨响,您将失去自动 Intellisense(在某些情况下,这是一种祝福,因为 Intellisense 在某些情况下会妨碍您),但您可以使用 CTRL-SPACE 调用不同的 Intellisense 列表。此列表不限于控件类型,但一旦您开始输入,您将获得通常的自动完成功能,可将您跳转到列表中的适当位置。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        1. 调试 -> 编译
        2. 压缩/维修
        3. 然后制作 ADE

        【讨论】:

        • 当然,在制作 ADE/MDE 之前不知道自己的文件是否会编译的情况是绝对不应该的。任何有能力的开发人员都会在每几行之后重复编译代码。在我看来,其他任何事情都只是草率。
        猜你喜欢
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 2010-09-16
        • 1970-01-01
        • 2016-10-11
        相关资源
        最近更新 更多