在2003年和2007年同时运行Microsoft Access数据库有什么影响?
在2003年和2007年同时运行Microsoft Access数据库有什么含义?
我忘记上课了吗?
该程序最初在Office 2003中构建,然后在2007年运行。当运行该程序的计算机同时具有2003和2007时,似乎会出现问题。该问题似乎也源于" Microsoft Access 12.0对象库"(或者2003年的" Microsoft Access 11.0对象库")的引用。要查看此信息,只需查看VBA屏幕上的"工具:参考"菜单。
该错误的症状基本上是无法识别代码(几乎就像它无法识别Im正在使用的编程语言一样)。通常,它后面带有一个框,上面写着"我们作为事件属性设置输入的表达式On Load产生以下错误:对象或者类不支持事件集"。我们也可以将"单击时加载"替换为"单击时加载"按钮或者将"更改时"替换为文本框。
我个人怀疑计算机正在使用Microsoft Access 11.0 / 12.0对象库的一部分,然后将两者混合成无用的VBA参考。进一步证实我怀疑的是在显示"配置Microsoft Access"的两者之间跳出的框。进一步证实我怀疑的另一个问题是它将在第一个打开的那个(例如2007年)上运行,然后运行不能在另一台计算机上运行(2003年为例)
唯一需要解决的唯一问题是更改DoCmd.OpenForm的最后一部分,即acFormReadOnly(或者acReadOnly,这取决于机器在特定日期的感觉,是的,它可以与一个,一个一天,然后要我再切换一次)以简单地锁定各个文本框
也许它不是完全编码,但是我认为它可以通过编码来解决。
希望这足以使某人提出一些建议。
解决方案
回答
我们有一个用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版本?如果我想确保我的应用程序崩溃,这就是我要做的。我认为,如果目标是开发软件,则绝对应该为机器找到更好的配置!
回答
通常,不支持在一台计算机上安装多个版本的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.
回答
微软的官方立场是,不建议同时在同一台PC上安装多个Office版本,并且Access 2007似乎旨在向我们证明这一点!
也就是说,我们可以通过执行以下操作来避免大多数问题:
1将数据库分为后端和前端。将后端(表和关系)放置在网络文件夹中,然后将前端(所有其他对象)的副本放置在每个用户的桌面上。
2最好使前端成为mde,以避免每次在其他版本的Access中打开db时,引用都被打乱。
3创建快捷方式以使用所需的Access版本打开前端,以便始终使用该版本打开它。 (记住使用快捷方式!)在快捷方式的目标中:
"访问12 msaccess.exe的路径"" db.mdb的路径"