我的问题是开发和管理问题的混合,但由于它主要影响开发人员并且参考开发工具(Access,VBA和Form模型),我在这里发布它并希望我不会受到抨击。说完这个:
我已将Access 2010 x64 .adp项目转换为Access 2016 .accdb,这并不太难。但是现在,每当我运行引用表单的UniqueTable
属性的代码时,我都会收到以下错误:
Run time error 2455 You entered an expression that has an invalid reference to the property UniqueTable.
这是Access 2013和Access 2016的已知问题;例如,请参阅here。
微软已经做出了修复 - 请参阅here。
问题出在这里:几天前,我安装了Office 2016 x64。在尝试应用上述修复时,我只收到以下消息:
There are no product affected by this package installed on this system.
当然,我已经仔细检查过我使用的是补丁的正确版本(x64)。我还没有尝试安装Office 2016 x86并应用x86版本的补丁。
有没有人设法在x64版本的Office 2016上实际安装此补丁?根据吉姆康拉德的声明(here的第二个帖子),它解决了这个问题,但如果我们无法安装它,这无济于事。
好吧,uniquie表设置在Access(非adp)中没有任何用处。据我所知,该设置告诉(告诉)Access从源数据表中使用PK,因此不应影响我能想到的任何有价值的东西。
我要做的是在ADP项目中以设计模式打开表单,并在将表导入accDB之前简单地删除设置。问题是您无法在accDB中获取并删除此非需要设置,但是从ADP复制时它仍然存在。
因此,只需清空ADP中的uniqueTable设置,然后导入表格。您还可以编写一个循环,并在将它们导入访问之前一次性完成所有表单(因此,我认为处理副本是有意义的)。
所以这里的问题是,当您将表复制到accDB中时,设置仍然存在,但是由于未通过代码或属性表公开,因此您无法获取,更改或删除此设置。
因此,这里的简单解决方案是在将表单导入accDB之前删除ADP应用程序中的设置。