业务报表中,有些敏感数据是必要 根据用户身份过滤的 。比如 贩卖 数据统计表 ,只答应 报表用户看到本部分 的贩卖 数据。这时就必要 将用户信息作为报表数据的查询条件。
葡萄城报表提供了一个专门的表达式变量,表现 用户身份信息。不但 可以按登录报表体系 的用户名来查询数据,也可以按照用户所属部分 等其他关联信息作为查询条件 。这种用户身份关联信息称为“用户上下文(User Context) ”信息。引用用户上下文信息的表达式情势 为:
=Code.UserContext.GetValue("Key")
此中 ,Key表现 上下文信息的键值 ,比如 :Name表现 用户名,也就是说,Code.UserContext.GetValue("Name")返回的就是正在查察 报表的用户登录名。
通过葡萄城报表特有的安全提供程序机制 ,可以支持恣意 字符串的Key,比如 用户所属部分 、业务管辖地区 、乃至 姓名、年龄 、身份证号等任何与用户帐号关联的信息 。
下面是一个贩卖 统计表的简单 示例,在此示例中 ,查察 报表的用户只能看到其所属部分 的贩卖 数据。数据库中的用户关联信息如下表:
此中 :UserName表现 用户登录报表体系 的用户帐号;DepId为用户所属部分 的代码。贩卖 数据如下表:
此中 的DepId就是部分 代码,SalesQty为贩卖 数量 ,SalesAmt为贩卖 额 。新建一个RDL报表 ,添加用户信息参数,参数名为UserName,如下图:
留意 :由于 这个参数的值要从体系 中主动 获取 ,而不是让用户在参数栏自行输入,以是 勾选了【隐蔽 】,如许 可以克制 用户输入其他用户的用户名,从而“偷窥”敏感信息。
切换到【默认值】选项卡 ,选择【非查询结果 】,点击加号图标,添加一个参数默认值 ,设置其表达式为:=Code.UserContext.GetValue("Name")如下图:
点击【确定】按钮,生存 参数设置。添加数据源,如下图:
添加数据集 ,先界说 数据集参数,使之引用前面界说 好的取用户信息的报表参数UserName,如下图:
再界说 查询语句 ,select * from DepSaleswhere DepId in (select DepId from Emp where UserName = @p1)如下图:
此中 的Where子句,就是根据用户所属部分 来过滤数据 。预备 好数据集之后,在计划 区拖放一个文本框 ,用于表现 UserName参数的内容,再放一个表格,绑定命 据集的字段,如下图:
留意 :由于 本地 计划 器中并没有哪个用户登录 ,因此在计划 器中预览时,是取不到用户上下文信息的。假如 在预览时看到报错,可将UserName参数设置为【答应 空值】 ,如下图:
为了查抄 按用户身份过滤数据的结果 ,请点击【文件】菜单的【生存 到服务器】,将报表模板上传到报表服务器。然后在报表管理流派 设置报表查察 权限 ,如下图:
再在体系 管理流派 创建几个用户,如下图:
以zhang,li ,wang等用户身份登录到报表查察 流派 ,查察 报表,如下图:
可以看到 ,报表内容精确 表现 了当前用户名,而且 表格中仅表现 该用户所属部分 的业务数据 。
有奖问卷
酷爱 的用户,感谢您对葡萄城的支持和承认 !为充实 相识 您的需求,以便我们连续 改进 ,提供更强大 的控件软件产物 和更专业的技能 服务,特约请 您参加 本次问卷观察 。参加 即有奖!完备 填写问卷,即可得到 500枚 GCDN金币(可兑换实体奖品) ,还可参加 抽奖获赠风雅 奖品。
问卷地点 :https://www.wenjuan.in/s/fYzUJf/
转载请注明出自:葡萄城报表
相识 葡萄城报表:http://www.grapecity.com.cn/enterprise-solutions/activereports_server/
关于葡萄城
葡萄城创建 于1980年,是环球 最大的控件提供商,天下 领先的企业应用定制工具 、企业报表和贸易 智能办理 方案提供商 ,为高出 75%的环球 财产 500强企业提供服务。葡萄城于1988年在中国设立研发中心 ,在环球 化产物 的研发过程中,不绝 顺应 中国市场的本地 需求 ,并为软件企业和各行业的信息化提供良好 的软件工具和咨询服务 。