将 Access 2007 accdb 编译成 accde
Posted
技术标签:
【中文标题】将 Access 2007 accdb 编译成 accde【英文标题】:Compiling an Access 2007 accdb into accde 【发布时间】:2009-08-19 15:17:39 【问题描述】:我正在尝试在访问中使用内置的 Make ACCDE 功能来创建一个与 SQL-Server 2008 后端接口的独立应用程序。当我运行 Make ACCDE 时,我收到一个错误,指出正在使用太多的 TableID 引用(限制在 2048 左右)。
通过反复试验(在编译之前删除表单),我发现了导致问题的表单。如果我从表单中删除所有 VBA 代码,它似乎可以编译。
我想知道是否有人以前遇到过这个问题,是否有特定的问题导致它?我现在已经遇到过几次这个问题,通过我的代码删除一半来查找错误来自哪里真的很痛苦。
【问题讨论】:
【参考方案1】:对于未来的编码,您应该确保遵循良好的编码习惯:
在 VBE 选项中,关闭 COMPILE ON DEMAND 并确保打开 REQUIRE VARIABLE DECLARATION(这将导致默认使用 OPTION EXPLICIT 创建新模块)。
将编译按钮添加到 VBE 的工具栏中,以便轻松访问。编码时,每隔几行代码点击一次编译按钮(每次编译后保存)。这将防止您编写太多不可编译的代码行,因此更容易将它们修复为可编译。
定期备份您的数据库并反编译并重新编译它。这将清除已编译 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 代码中缺少资源到底是什么意思?以上是关于将 Access 2007 accdb 编译成 accde的主要内容,如果未能解决你的问题,请参考以下文章
删除数据后如何减小 ms access 数据库文件大小(*.accdb)(MS Office 2007)
不可识别的数据库格式,我用office2007的,ACCESS数据库格式是accdb的?请指教
访问 2007 - accdb;跨多个服务器建立可靠的多用户环境的选项?