问两个有关Access 查询的小问题,谢谢!

guyehanxinlei 2010-11-29 09:46:57
环境:Microsoft Access 2003

条件:
1.已在工具-选项中已经显示系统对象选中
2.已在工具-安全-用户组权限中将msysobjects系统表在所有权限分配给Admin组

问题:
1.通过C# 连接Access 使用OleDbCommnad执行 select * from msysobjects where Type=5 查询不到除常规查询之外的生成表 查询(Create Table Query)(想得到所有查询名称)

2.如何通过C# OleDbCommand执行一个生成表查询

谢谢!
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ly_longyue 的回复:]
如何设置Access访问msysobjects系统表权限
也是网上找到的方法,不过只有英文,偶翻译了一下,呵呵
默认情况下,在程序中是无法直接访问Access的系统表的,会提示没有权限,只有手工设置了读权限后才可以。
读取Access库中所有表名的SQL语句:select name from msysobjects where flags = 0

1. 打开Access

2. ……
[/Quote]

按上述步骤的设置,我已经设置过了,还是有问题,难道是这个Access有问题?
guyehanxinlei 2010-11-29
  • 打赏
  • 举报
回复
如果使用OleDbCommand对象执行select * from msysobjects where type=5会抛出 Record(s) cannot be read; no read permission on 'msysobjects'异常,

然后通过oleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Views, null)则不存抛出异常的问题,但看不到生成表查询的名称。
guyehanxinlei 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hztltgg 的回复:]
在access里直接可以查询么?
[/Quote]
在Access中直接查询不存上述问题,是可以看见包含生成表查询的所有查询名称,但通过程序读取就只能读到简单的查询名称,所有生成表查询都看不到。
不论是直接使用select * from msysobjects where type=5 还是通过oleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Views, null)都看不到

龍月 2010-11-29
  • 打赏
  • 举报
回复
如何设置Access访问msysobjects系统表权限
也是网上找到的方法,不过只有英文,偶翻译了一下,呵呵
默认情况下,在程序中是无法直接访问Access的系统表的,会提示没有权限,只有手工设置了读权限后才可以。
读取Access库中所有表名的SQL语句:select name from msysobjects where flags = 0

1. 打开Access

2. 点击“工具”菜单,选择“选项”

3. 在“视图”页上,将“系统对象”勾上

4. 点击“确定”按钮保存设置

5. 点击“工具”菜单,选择“安全”中的“用户与组权限”

6. 选择“权限”页

7. 在“对象类型”下拉列表中选择“表”

8. 在“用户名/组名”中选择“管理员”用户

9. 在“对象名称”中选择“MSysObjects”表

10. 在“权限”中将“读取数据”勾上

11. 点击“确定”按钮保存设置



1. Open Microsoft access
2. From the Tools menu, select the Options menu option
3. On the View tab, click the System Objects checkbox
4. Click OK to save your changes
5. From the Tools menu, select the Security -> User and Group Permissions menu option
6. Click the Permissions tab
7. Select the Table entry in the Object Type combo box
8. Select the Admin userid in the User/Group Name listbox
9. In the Object Name listbox, select the MSysObjects entry
10. In the Permissions group box, check the Read Data check box

hztltgg 2010-11-29
  • 打赏
  • 举报
回复
在access里直接可以查询么?
flyerer1 2010-11-29
  • 打赏
  • 举报
回复
大概是权限分配问题

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧