【问题标题】:Compiling an Access 2007 accdb into accde将 Access 2007 accdb 编译成 accde
【发布时间】:2009-08-19 15:17:39
【问题描述】:

我正在尝试在访问中使用内置的 Make ACCDE 功能来创建一个与 SQL-Server 2008 后端接口的独立应用程序。当我运行 Make ACCDE 时,我收到一个错误,指出正在使用太多的 TableID 引用(限制在 2048 左右)。

通过反复试验(在编译之前删除表单),我发现了导致问题的表单。如果我从表单中删除所有 VBA 代码,它似乎可以编译。

我想知道是否有人以前遇到过这个问题,是否有特定的问题导致它?我现在已经遇到过几次这个问题,通过我的代码删除一半来查找错误来自哪里真的很痛苦。

【问题讨论】:

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


    【解决方案1】:

    对于未来的编码,您应该确保遵循良好的编码习惯:

    1. 在 VBE 选项中,关闭 COMPILE ON DEMAND 并确保打开 REQUIRE VARIABLE DECLARATION(这将导致默认使用 OPTION EXPLICIT 创建新模块)。

    2. 将编译按钮添加到 VBE 的工具栏中,以便轻松访问。编码时,每隔几行代码点击一次编译按钮(每次编译后保存)。这将防止您编写太多不可编译的代码行,因此更容易将它们修复为可编译。

    3. 定期备份您的数据库并反编译并重新编译它。这将清除已编译 p-code 中积累的任何杂物(反编译会去除所有已编译 p-code 并仅留下规范代码文本),并且可以清除以前被损坏 p-code 隐藏的编译错误。

    通过遵循这些最佳实践,您几乎不会遇到代码损坏问题。

    【讨论】:

    • 如何在VB编辑器中添加编译按钮?我看了看,它似乎在任何工具栏上都不存在 - 只是在调试菜单上。
    • 右键单击工具栏,选择自定义。在命令对话框中,选择 DEBUG 菜单,然后向下滚动直到 COMPILE 按钮在右侧可见。然后将该按钮拖放到您想要的工具栏上。我总是把它放在最右边。我还添加了 CALL STACK 按钮(位于 VIEW 菜单下),因为我喜欢在中断模式下进行故障排除时能够导航它。
    【解决方案2】:

    我偶尔会看到类似的错误。我建议将所有对象导入新的 ACCDB。 Compact & Repairing 仅清理表和索引,对其他对象的损坏诊断或清理没有太大作用。

    如果您确实将它隔离到一个特定的表单,请尝试在表单上进行复制和粘贴。这应该足以让 Access 保存表单的干净副本。

    下次遇到这种情况时,您能否记录下确切的错误消息,包括号码,并通过 granite.ab.ca 的 tony 给我发电子邮件。我想将此添加到我的损坏网页的此类错误列表中,因为这似乎是 Access 2007 特定的消息。

    【讨论】:

    • @Tony 没有任何关联的错误号。它只是给你一个通用的错误文本。我已经解决了这个问题,它似乎是由于对 VB 代码中一些缺失资源的引用引起的。我能够追踪到它的唯一方法是通过蛮力删除所有内容并添加内容,直到它打破方法。
    • 您是指实际缺少的引用,还是代码中的某些已损坏的东西仍然指向不再存在的东西?在前一种情况下,检查 TOOLS 菜单上的 REFERENCES 列表应该会发现缺少的内容,而在后一种情况下,编译(在反编译之后)应该准确地清除导致问题的代码行。我尽量减少引用的数量并尽可能使用后期绑定。
    • Rister,我正在寻找 TableID 引用消息。通常这表明你还没有编译你的代码,但我看到你已经解决了。 VB 代码中缺少资源到底是什么意思?
    猜你喜欢
    • 2014-11-13
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多