魔方网表 让信息化更简单

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

查看: 8084|回复: 0

[原创] 如何设置查询过滤公式来实现记录级的权限控制呢?

[复制链接]
mofanglt 发表于 2015-12-9 13:16:19 | 显示全部楼层 |阅读模式
为了解决这样一个权限问题: 不同的员工负责不同地区的客户, 不需要通过其它查询或设置,就可以实现员工用户登录后只能看到自己所负责地区的客户以及信息。这种记录级的权限设置在不使用查询过滤公式这一功能时是很难实现的,但是通过查询过滤公式就可以很简单的实现了。
实际中使用的表单以及表单中已经存在的数据如下:
“员工资料” 表主要字段——姓名(文本),电话(文本),负责地区(文本)。 当前魔方网表系统中登录账号姓名是和“员工资料”表中的姓名相对应的,也就是说“员工资料”表中的存在的姓名用户在当前魔方网表系统中都添加了相应的账号,可能登录到魔方网表系统中的,关于添加系统用户的知识可以参见本手册系统管理章节的内容。“员工资料”表中需要有实际数据做基础,查询过滤公式是需要通过过滤条件查找出数据来实现记录级权限设置的。当前“员工资料”表中已有的数据。
“订单” 表主要字段——客户名称(文本),所在地区(文本),单价(数字),汇率(数字),日期(日期)。 当前“订单”表中已有的数据,在魔方网表中呈现的效果。现在还没有设置查询过滤公式,所以使用管理员登录时可以看到所有数据的,下面会在管理员账号登录的情况下设置查询过滤公式。
序号 名称 电话 负责地区
5 顾玉婷 11111111 山东
6 陈冰 22222222 北京
7 曹倩 33333333 上海

序号 客户名称 负责地区 单价 汇率 日期
1 汇丰银行 上海
2 海尔 山东
3 国务院办公厅 北京
现在就可以知道具体实现的是什么了,需要实现的是顾玉婷登录的时候,只能看到山东地区的订单;陈冰登录的时候,只能看到北京地区的订单;曹倩登录的时候,只能看到上海地区的订单。 也就是不同员工用户登录后只有能看到自己所负责地区的订单。因为是在“订单”中做过滤查询来实现记录级的权限控制,所以是在“订单”表中编辑查询过滤查询公式。 下面是编辑查询过滤公式的整个过程:
步骤一: 单击“订单”查询界面工具栏中的“编辑过滤器”按钮 ,打开编辑查询过滤器面板。
步骤二: 勾选上编辑查询过滤器面板最上边的“启用过滤项”, 然后选择过滤项和过滤条件。过滤项是“订单表.所在地区”,连接关系符是“在列表中”,过滤条件是“ MFVLOOKUP("员工资料","负责地区","姓名",MFUSER())”。这么设置过滤公式的意思就是通过MFVLOOKUP()函数返回一个列表,然后过滤出“订单”表中,“所在地区”字段值在过滤条件所返回的列表中的所有记录,返回的这个列表是“员工资料”表中“负责地区”字段值列表,并且是“姓名”字段等于“当前登录用户名”的那些记录的“负责地区”字段值列表, MFUSER()就是返回当前登录用户名。 MFVLOOKUP()函数和MFUSER()函数在工具栏的“扩展”中可以找到,条件输入完成后单击输入框右侧的 按钮,然后在单击过滤项列表上面的 把过滤项列表和过滤条件公式添加上。
? MFVLOOKUP()函数: 生成查找指定表单指定字段的值列表的语句, 仅用于在列表中和不在列表中过滤条件。可设置一个条件类型为等于的过滤条件,如果不设置,则返回表单中所有该字段的值。
? 语法: MFVLOOKUP(表单名,字段名[,条件字段名,条件值])。 表单名, 要查找的表单名称;
字段名, 要查找的字段名称; 条件字段名, 过滤条件字段名(可选); 条件值, 过滤条件值(可
选)。
? MFUSER()函数: 返回当前登录用户名。
? 语法: MFUSER()。
步骤三: 添加好过滤列表和过滤条件公式,需要单击 按钮对查询过滤公式进行保存,编辑查询过滤公式完成,现在可以看看实现的记录级权限的效果了。
a) 首先直接关闭保存后的查询过滤公式编辑面板,单击 按钮刷新下,看看经过查询过滤公式实现的权限对管理员是否起作用了,如下图,可以看到管理员登录时“订单”表中没有数据,因为管理员没有负责地区。
b) 注销魔方网表系统,使用顾玉婷的账号登录,查看“订单”表。只可以看到顾玉婷所负责的山东地区的订单。
c) 注销魔方网表系统,使用陈冰的账号登录,查看“订单”表。只可以看到陈冰所负责的北京地区的订单。
d) 注销魔方网表系统,使用曹倩的账号登录,查看“订单”表。只可以看到曹倩所负责的上海地区的订单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2025-5-8 05:35 , Processed in 0.068425 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表