使用Microsoft Excel VBA仅查询Access accdb文件时,对'MSysObjects'没有读取权限(错误号:-2147217911)-mdb正常工作
使用Microsoft Excel VBA查询访问权限。
对于一个mdb文件,此连接字符串可以很好地打开mdb文件,并且SQL String返回我想要的表。
Connection String: Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\My Files\Word\ADA II Text\Chapters\9 -
8\Access\ADAIICH9TEST.mdb";User Id=admin;Password=;
SQL String: SELECT MSysObjects.Name From MSysObjects WHERE MSysObjects.Name Not Like "MSyS*" And Type=1 AND
Flags=0 ORDER BY MSysObjects.Name;
对于accdb文件,此连接字符串可以正常打开accdb文件,但SQL会引发以下错误:
错误编号:-2147217911错误描述:记录无法读取;没有对“ MSysObjects”的读取权限。
为什么在读取mdb文件而不是accdb文件时它有权访问MSysObjects? 如何通过编程方式或从访问文件中授予访问权限?
在运行SQL之前,我已经尝试执行以下语句:
'cn.Execute "GRANT SELECT ON MSysObjects TO Admin;"
'cn.Execute "GRANT SELECT ON TABLE MSysObjects TO PUBLIC;"
他们抛出错误: 错误编号:-2147467259错误描述:无法打开Microsoft Access数据库引擎工作组信息
文件。
答案 0 :(得分:0)
在Access内,您需要授予默认用户访问表的权限。
在带有Access的立即窗口中执行
CurrentProject.Connection.Execute "GRANT SELECT ON MSysObjects TO Admin;"
然后您的SQL将起作用。
您可能想更改您的连接字符串。 IIRC Jet在Access 2003之后将无法使用,请尝试
Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\...ADAIICH9TEST.accdb;