1

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

有什么课我忘了上吗?

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

该错误的症状基本上是无法识别代码(几乎就像它无法识别我正在使用的编程语言一样)。它通常在此之后带有一个框,上面写着“您作为事件属性设置输入的加载时表达式产生了以下错误:对象或类不支持事件集”。您还可以将“On Load”替换为按钮的“On Click”或文本框的“On Change”。

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

唯一的另一个问题是我必须解决的问题是更改 DoCmd.OpenForm 的最后一部分 ,,,,, acFormReadOnly (或 acReadOnly,取决于机器在那一天的感觉 - 是的,它可以与一个一起工作,有一天,然后要我再切换一次)以简单地锁定单个文本框

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

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

4

3 回答 3

1

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

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

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

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

3 - 创建一个快捷方式以使用所需的 Access 版本打开前端,以便始终使用该版本打开前端。(记得使用快捷方式!)在快捷方式的目标中:

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

于 2008-09-16T19:01:59.090 回答
0

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

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

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

于 2008-09-16T18:26:28.427 回答
0

通常,不支持在一台计算机上安装多个版本的 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。

于 2008-09-16T18:26:50.797 回答