没有对"MSysObjects"的读取权限(错误号:-2147217911)使用Microsoft Excel VBA 查询仅访问 accdb 文件 - mdb 工作正常



使用 Excel VBA 查询时Microsoft对"MSysObjects"没有读取权限(错误号:-2147217911( 仅访问 accdb 文件 - MDB 工作正常

使用 Microsoft Excel VBA 查询访问权限。

对于 mdb 文件,

此连接字符串可以很好地打开 mdb 文件,SQL 字符串返回我想要的表。

Connection String: Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:My FilesWordADA II TextChapters9 -

8AccessADAIICH9TEST.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 文件时可以访问 MSysObjects,而不是 accdb 文件?如何以编程方式或从访问文件中授予访问权限?

在运行 SQL 之前,我已经尝试执行以下语句:

'cn.Execute "GRANT SELECT ON MSysObjects TO Admin;"
'cn.Execute "GRANT SELECT ON TABLE MSysObjects TO PUBLIC;"

他们抛出错误:错误编号:-2147467259错误描述:无法打开Microsoft 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;

相关内容

  • 没有找到相关文章

最新更新