作为序言,请注意,这篇文章并不是关于Microsoft.Jet.OLEDB.4.0的以下任何常见问题的重复问题
Microsoft.Jet.OLEDB.4.0"-problem。Nz() )仅在Access VBA内执行的SQL中可用,在通过JET或Nz()执行的SQL中不可用。然而,CLng --当通过JET (即Access 问题陈述:
CLng() )的SQL查询。下面是一个复制问题的最小查询:选择CLNG( 123 )作为Foo
当我在计算机上运行此查询时(通过Office 365安装了32位Office 2019 ):
表达式中的
- When I use the `Microsoft.Jet.OLEDB.4.0` OLE-DB provider it fails with this exception message:
OleDbException未定义函数'CLNG‘。
HResult: -2147217900
NativeError: -530123806
SQLState: 3085
- When I use the `Microsoft.ACE.OLEDB.16.0` OLE-DB provider it succeeds.当我在另一台计算机上运行此查询时(通过Office 365安装了32位Office 2019 ):
- When I use the `Microsoft.Jet.OLEDB.4.0` OLE-DB provider it succeeds.
- When I use the `Microsoft.ACE.OLEDB.16.0` OLE-DB provider it succeeds.*.mdb数据库文件.当枚举32位OLE-DB提供程序时,两台计算机为JET和ACE驱动程序报告相同的信息(请参见下面的屏幕快照,我的计算机位于顶部,另一台计算机位于底部):

Microsoft.ACE.OLEDB.12.0进行测试,因为ACE 15 (Office 2013)和ACE 16 (Office 2016,Office 2019)都覆盖了ACE 12提供者注册,因此任何请求ACE 12的应用程序都将得到ACE 15或16。假设:
我将假设有一些标志或系统范围的开关可以配置Microsoft.Jet.OLEDB.4.0如何处理内部函数(我知道JET 4.0驱动程序可以在SQL89和SQL-92模式下运行,我不知道它是否与此相关),这并不影响Microsoft.ACE.OLEDB.16.0驱动程序。
我会就这件事联系Office支持部门,并汇报他们的回答--如果有的话,但是如果有人知道的话,我会非常感激的。
发布于 2020-07-28 08:24:18
有意思的。您检查过JET/ACE的沙箱设置吗?
沙箱设置将防止JET/ACE sql中使用“某些”函数,并防止(不允许)使用它们。
但是,clng()不是阻塞的sql函数之一。所以我怀疑这会是个问题。但是,我会对这些问题做一个快速的测试/检查。(再一次,我很抱歉根据你给出的信息提出了一个长远的建议,这不应该是你的问题。)
现在,最好的猜测?您希望将JET sp更新安装到失败的开发框中。我想试试这里的sp8:https://www.microsoft.com/en-us/download/details.aspx?id=7151
你的笔迹看上去很完整。而且,由于查询是工作的,而不是那些具有某些功能的查询。我以前见过这个问题--我记不起解决办法了。我记得这是在2003年左右!我们发现sql中的“一些”函数可以工作,而有些则不行。我似乎记得,修复方法是重新注册一个额外的.dll,它为jet提供了一些附加的jet函数。换句话说,有一个包含/添加/允许JET sql函数的.dll。如果这个部件坏了,那么一些喷射功能就不能工作了。
问:其他JET本机功能会失败吗?还是全部?如果都失败了,我会查看沙箱设置。如果有的话,那么sp8安装是最好的猜测。
并给出这是100% jet,然后问题,如中断引用有关VBA不适用于这里。我记得这不是VBA函数失败的原因,也不是VBA引用中断造成的。(一旦它们向南,那么当使用Access应用程序(包括JET sql)时,几乎所有的sql()函数都会中断。)(再说一遍:你用的是JET,而不是真正的access)。
我猜另一个很长的机会?如果这是一个不同的mdb,还是你在测试中被殴打致死的副本?我会考虑启动它的访问,并做一个紧凑+修理。
所有或仅仅是“一些”jet sql函数将说明这一点。但是,一旦你找到了这个答案,我就没有办法了!但是,如果所有函数()无论如何都失败了呢?好吧,那喷气机,而不是ACE,是在那台机器上的。你需要重新安装喷气式飞机。从2007年起我就没这么做过了。(喷气式飞机是窗户的一部分)。
我认为你找不到JET下载。但是你可以用谷歌搜索JET -这是我最好的选择和建议--尝试安装一个JET sp8包。
发布于 2020-11-26 19:24:41
原来,在我的机器上,当32位ACE驱动程序已经安装时,我已经强制安装了64位ACE驱动程序。在卸载64位ACE驱动程序(并重新安装32位ACE驱动程序以获得良好效果)之后,它又开始正常工作了。
我怀疑32位和64位的驱动程序总是将JET的内置(在ODBC兼容的子集中)委托给Visual运行时DLL,它需要32位或64位与ACE驱动程序兼容,但是它试图以一种在32位/64位ISA不正确时失败的方式加载JET(如果正确的话,我可能应该使用像ProcMon这样的工具来查看实际情况.)。
https://stackoverflow.com/questions/63126284
复制相似问题