页面调用微信的js代码(js打开微信)
业务报表中,有些敏感数据是需要根据用户身份过滤的。比如销售数据统计表,只允许报表用户看到本部门的销售数据。这时就需要将用户信息作为报表数据的查询条件。
葡萄城报表提供了一个专门的表达式变量,表示用户身份信息。不仅可以按登录报表系统的用户名来查询数据,也可以按照用户所属部门等其他关联信息作为查询条件。这种用户身份关联信息称为“用户上下文(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年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。