| 网站首页 | 新闻 | 新书 | 专家 | 技巧 | 源码作品 | 工具/资源 | 商城 | 风采 | 留言 | 论坛 | 网址 | 承接 | 
您现在的位置: Access/Office中国 >> 技巧 >> Access >> 安全加解密 >> 文章正文 用户登录 新用户注册
如何能通过窗体访问表,但不能直接读取表?           ★★★
如何能通过窗体访问表,但不能直接读取表?
作者:cg1 文章来源:access911.net 点击数: 本日:{$DayHits} 更新时间:2008-11-7 9:03:29

问题:

如何能通过窗体访问表,但不能直接读取表?
我需要让用户不能直接打开我的表,但是可以通过我编写的窗体来打开这些表,这样我就可以编程控制一些字段的数据了。

 

回答:

原理:

可以通过 ACCESS 自身的安全向导结合 JET SQL 中 SELECT 查询的 WITH OWNERaccess OPTION 声明来完成。
WITH OWNERaccess OPTION 在具有安全工作组的多用户环境中,使用该声明和查询给运行该查询的用户与查询所有者相同的权限。
A、你只要将某个表的所有者设定为某个自定义用户,而该用户属于管理员组,对表有读取、修改权限。
B、设定在默认情况下用户组都拥有打开窗体的权限,但没有读取表的权限
C、用WITH OWNERaccess OPTION来建立窗体的数据源,赋予普通用户拥有表的所有者才拥有的修改读取权限。这样使用者就只能通过你的窗体来访问数据表了。
D、发布的时候无需发布你的 MDW 文件,因为客户那里默认会以用户组的权限打开你的数据库,这样就达到你的目的了。


实际操作:

1、建立一个数据库,里面有1个表(表1),一个窗体(窗体1),设置“窗体1”的数据源为
SELECT * FROM 表1 WITH OWNERaccess OPTION 


注意:有些用户要通过建立查询,设置该查询的运行权限为“所有者的”然后保存,注意查询的所有者要与绑定它的窗体的所有者相同。经过上面这步骤后设置窗体的记录源是查询名或者直接设置 SQL 语句都可以了。原因是 access 会自动生成极其无聊的不可见的 [~sq_f????] 表,对此我只能哭笑不得。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)