首页 > 解决方案 > 如何调试已编译的访问数据库 (accde)

问题描述

我有一个连接到 SQL Server 表的访问前端并且工作正常。但是,当我将其编译为 accde 文件时,关闭数据库时会出现各种错误。这些错误似乎表明程序仍在查找表或全局变量的值。隐藏表单的 Form_Close() 事件中有一个例程,用于删除所有指向 SQL Server 后端的链接。那么,如何调试已经编译好的访问数据库呢?为什么编译后的 DB 与未编译 (accdb) 版本的行为不同?

标签: vbams-accessdebuggingcompiled

解决方案


你说的是同一台电脑,还是不同的电脑?

编译后的 accDE 对在不同的机器(甚至相同的版本)上执行非常敏感。原因是编译后的 accDE 采用了您当前的 office 发行版本。在全局变量和错误处理方面?accDE 是最好的选择,因为未处理的错误不会重新设置本地甚至全局变量。实际上,accDE 就像一列不可阻挡的货运列车。

如果您的 accDB(未编译)在您的计算机上工作并运行良好,那么我从未见过 accDE 不运行的情况,实际上运行得更好并且表现得更加稳健。

所以,不,你不能调试 accDE,但你可以在同一台计算机上调试 accDB。

如果您在另一台计算机上运行 accDE,那么您在帖子中遗漏了大量、巨大且壮观的信息。

如果您在同一台计算机上运行 accDE(创建它的计算机),那么唯一可能的情况是 accDE 文件扩展名正在使用不同版本的访问权限来运行。这很少见 - 因此我会从控制面板、应用程序和功能中找到您的访问版本并右键单击并修复您的办公室安装。

office/access 的补丁版本问题在这里非常重要。原因当然是如果你部署了accDB,它通常会工作,因为access可以(并且确实)检测到Access的当前版本(甚至SP/patch/update)级别不同,然后它可以重新编译代码即时(因为 accDB 有源代码)。accDE 没有,因此无法重新编译。但是,我仍然强烈建议您部署 accDE 并解决 SP/patch 级别问题,因为与未编译的 accDB 相比,accDE 在操作上要可靠得多。

如果您在运行 accDB 的同一台计算机上遇到此问题,然后使用该计算机创建 accDE,我会相当震惊。如果这是实际情况,那么我将创建一个新的空白 accDB,并从旧的 accDB 导入所有内容,然后确保它可以编译代码(从 IDE 调试->编译)。如果应用程序编译,然后创建 accDE,它应该可以正常工作。因此,如果这是同一台机器,那么您的 accDB 已损坏或损坏。正如我所说,创建一个新的,从旧的导入所有内容,然后从中创建您的 accDE。它会起作用,而且我从未见过 accDB 起作用而 accDE 不起作用(在同一台机器上)的情况。


推荐阅读