在 2003 年和 2007 年运行 Microsoft Access 数据库有何影响?

有什么课我忘记上了吗?

该程序最初是在 Office 2003 中构建的,然后在 2007 年运行。当运行它的机器上同时有 2003 和 2007 时,似乎会发生问题。该问题似乎也源自“Microsoft Access 12.0 对象库”(或 2003 年的“Microsoft Access 11.0 对象库”)的引用。要看到这一点,只需查看工具:VBA 屏幕上的引用菜单。

该错误的症状基本上是代码无法识别(几乎就像它无法识别我正在使用的编程语言一样)。其后通常会出现一个框,显示“您在事件属性设置中输入的加载表达式产生了以下错误:对象或类不支持事件集”。您还可以将按钮的“加载时”替换为“单击时”,或者将文本框的“更改时”替换。

我个人怀疑计算机正在获取 Microsoft Access 11.0/12.0 对象库的一部分,然后将两者混合成无用的 VBA 引用。进一步证实我怀疑的是在两者之间弹出的框,上面写着“配置 Microsoft Access”。另一个进一步证实我怀疑的问题是,它将在首先打开的那个(例如 2007 年)上运行,然后再打开。不在其他上运行(2003 年继续该示例)

唯一的另一个问题是我必须解决的是更改 DoCmd.OpenForm ,,,,, acFormReadOnly (或 acReadOnly,取决于机器在那一天的感觉如何 - 是的,它可以与一个一起使用,有一天,然后希望我将其切换到另一天)以简单地锁定各个文本框

也许这并不完全是编码,但我认为它可以通过编码来修复。

希望这足以让某人想出一些东西。

有帮助吗?

解决方案

微软的官方立场是不支持也不推荐在同一台电脑上安装多个office版本,而Access 2007似乎就是为了向我们证明这一点!

也就是说,您可以通过执行以下操作来避免大多数问题:

1 - 将数据库分为后端和前端。将后端(表和关系)放置在网络文件夹中,并将前端(所有其他对象)的副本放置在每个用户的桌面上。

2 - 最好将前端设置为 mde,以避免每次在其他版本的 Access 中打开数据库时引用乱序。

3 - 创建一个快捷方式以使用所需版本的 Access 打开前端,以便 总是 用那个版本打开。(并记住使用快捷方式!)在快捷方式的目标中:

“Access 12 msaccess.exe 的路径”“db.mdb 的路径”

其他提示

我们有一个 MS-Acces 应用程序,使用 Access 2003 开发,并在 Access 2003 和 Access 2007 的完整版本或运行时版本上使用(Access 2007 Runtime 是免费的,我们正在充分利用它!)。除了参考文献管理之外,没有什么特别的问题。我们的代码分析计算机上安装的 Office 版本并自动更新相应的引用(不仅是 Access,还包括 Excel、Outlook、Word 等:代码非常棘手但很有趣!)

据我所知,Office 2003/VBA 中可用的主要对象、属性或方法在 Office 2007 中没有被弃用。一旦这些引用问题得到解决,Office 2003 代码将与 Access 2007 一起运行。Office 2007 中引入了一些新对象,因此我不建议任何开发人员使用它来开发代码以进一步与 Access 2003 一起使用。

但你的问题的主要和真正的问题是:为什么要在同一台计算机上运行两个 Access 版本?如果我想确保我的应用程序崩溃,我就会这样做。我认为如果你的目标是开发软件,你绝对应该为你的机器找到更好的配置!

通常,不支持在一台计算机上安装多个版本的 Access,并且会导致您在对象引用方面遇到问题。

如果数据库是在 Access 2003 中编写的,编译为 .MDE,然后部署到运行 Access 2007 的单独 Windows 实例上,则不应遇到任何重大问题(除了 UI 更改(例如将自定义工具栏扔到加载项中))丝带)。

为了在多个版本的 Access 上进行测试,您需要在每个版本之间进行某种形式的隔离。我使用多个虚拟机来完成此任务。我的主要 Windows VM 运行 Office 2007 和 IE7,我还有第二个 VM,其中运行 Office 2003 和 IE6 用于测试。

请注意,如果您只想将 Word、Excel 和 Outlook 2007 与 Access 2003 一起使用,则可以先单独安装 Access 2003,然后自定义安装 Office 2007 并取消选择 Access 2007。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top