打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
不能读取记录;在MSysObjects上没有读取数据权限

不能读取记录;在MSysObjects上没有读取数据权限 access2007

1072人阅读 评论(2) 收藏 举报

当我读取ACCESS里的系统表MSysObjects时,出现:不能读取记录;在 MSysObjects 上没有读取数据权限。的提示,语句是:select name from MSysObjects where type=1 and flags=0,而这个语句是可以直接在ACCESS查询器里使用的,不知为何,网游一翻,找到解决方法,不过还好,按这样的设置后以后这个数据库就可以读取这个表了。

操作过程:

默认的情况是admin对MSysObjects没有任何权限!包括查询

打开您的ACCESS数据库,然后

工具 -> 选项 -> 视图 -> 隐藏对象、系统对象

前面的勾选上。

工具 -> 安全 -> 用户与组的权限

在对象名称中选定 MSysObjects ,然后权限中设置其权限。

OK,现在可以试一试了,以后这个数据库就可以直接读取MSysObjects表了

"注:在 Access 2007, 点击左上角的Office按钮,再点"Access选项"-->"当前数据库"==>"导航",这样就可以找到相应的选项了。


可能很多在使用access的同学都没有打开过Access的系统内置表,先让大家了解下系统内置表。


 程序代码
<%sqlcmd="select name from [msysobjects] where type=1 and flags=0"%>


用这条语句就可以取得Access数据库中所有表,但需要设置读取MSysObjects表的权限,否则会出现“不能读取记录;在 'MSysObjects'上没有读取数据权限”的错误提示。

office 2003设置:工具 -> 选项 -> 视图 -> 勾选隐藏对象、系统对象。工具 -> 安全 -> 用户与组的权限 ,在对象名称中选定 MSysObjects ,然后权限中设置其读取权限。

office 2007设置:单击左上角图标 -> Access选项 -> 当前数据库 -> 导航 -> 导航选项 -> 勾选显示隐藏对象,显示系统对象。数据库工具选项卡 -> 用户和权限 -> 用户与组权限,对象类型选择表,对象名称选定MSysObjects,然后勾选“读取数据”权限

还有一种方法可以实现读取Access数据库中所有表:


 程序代码
<%
set rs=conn.openSchema(20)'返回包含模式信息的 Recordset 对象
rs.filter="table_type='table'"'筛选table_type为table类型的数据表,其他类型为系统内置表
do while not rs.eof
    response.write(rs("TABLE_NAME"))'用recordset记录集获取列名为table_name的数据
    response.Write("<br />")
rs.movenext:loop
%>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ASP获取Access所有数据表的sql语句
Access:如何枚举表名和字段名
如何查询一个Access数据库中有多少表
查询数据库里所有表名和字段名
请问如何用查询语句获取Access中所有表的表名
注入篇1,高手飘过
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服