关于vba:在2003年和2007年同时运行Microsoft Access数据库有什么含义?

关于vba:在2003年和2007年同时运行Microsoft Access数据库有什么含义?

What are the implications of running a Microsoft access database in both 2003 and 2007?

在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,具体取决于机器在特定日期的感觉-是的,它可以与之配合使用,一天,然后要我切换另一天)以简单地锁定各个文本框

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

希望这足以使某人提出一些建议。


Microsoft的官方立场是不建议在同一台PC上安装多个Office版本,也不建议这样做,而Access 2007似乎旨在向我们证明这一点!

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

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

2-最好使前端成为mde,以避免每次在其他版本的Access中打开db时,引用都乱序。

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

"访问12 msaccess.exe的路径"" db.mdb的路径"


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


我们有一个用Access 2003开发的MS-Acces应用程序,可在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版本?如果我想确保我的应用程序崩溃,这就是我要做的。我认为,如果您的目标是开发软件,则绝对应该为您的机器找到更好的配置!


推荐阅读