原理: 可以通过 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????] 表,对此我只能哭笑不得。 2、请再参考一遍微软的文章中以下章节 《使用 Security Wizard 设置 Access 数据库的安全性》 文章位置:http://access911.net/index.asp?board=4&recordid=71FAB51E#odc_acsecurity_wizard
3、将其中的第8步的“是,要授予用户组一些权限”点上 4、赋予用户组“打开/运行”数据库的权限;赋予用户组“打开/运行”窗体1的权限,然后单击“下一步”,其他的照上面那篇文章做 5、用快捷方式附带工作组启动 MDB 文件,然后设置你的新管理员(以示例来说就是 frice )对 表1 的“管理”权限 6、完成后不要用快捷方式附带工作组启动,直接启动 MDB 文件看看效果如何? 7、再回头看一下 WITH OWNEERACCESS OPTION 的帮助吧 WITH OWNERACCESS OPTION 声明 在具有安全工作组的多用户环境中,使用该声明和查询给运行该查询的用户与查询所有者相同的权限。 语法 sqlstatement WITH OWNERACCESS OPTION; 说明 WITH OWNERACCESS OPTION 声明是可选的。 下列示例使用户能够查看工资信息(即使用户没有权限查看工资表),提供查询主人拥有的权限: SELECT LastName, FirstName, Salary FROM Employees ORDER BY LastName WITH OWNERACCESS OPTION; 如果用户无法创建表或添加,可使用 WITH OWNERACCESS OPTION来运行 制表或追加查询。 如果要强制工作组安全性设置及用户的权限,不要包含 WITH OWNERACCESS OPTION 声明。 此选项要求您必须访问与该数据库相关的 System.mdw 文件。它只在安全的多用户实现中才真正有用。 |
|