用例说明
在报表制作过程中,往往会遇到参数的备选值过多、且相互之间含有上下级关系,适合以多级结构来进行展示的情况,例如按机构上下级组织的机构树。
在本例中,通过系统内置的树形参数控件来实现此效果,如下图所示。
实现步骤
要实现上面的效果,请执行以下操作:
1.设置树形参数控件
1) 新建参数,在参数设置的第一个界面中,【控件类型】选择【下拉树】,这样才会在展示时使用树形结果来展示。
注:在本例中,使用知识库的资源表为例创建一个树形参数。在Demo示例库中也有该参数例子,路径:公共设置 > 参数定义 > Demo参数 > northwind > 资源树选择
2) 点击【下一步】进入下一个设置界面。
在第二步参数设置界面中,有更多的参数行为控制选项。其中最重要的选项列出如下:
- 备选值设置:树的备选值是一个SQL语句,用于从数据库中检索出每一个指定节点的下级节点。SQL至少需要包含3个字段,分别是实际值、显示值、上级节点的实际值;而SQL的where部分由系统根据当前要展开的父节点自动补全。在本例中,SQL语句为:select c_resid, c_resalias, c_pid from c_restree
- 默认值设置:树的默认值同样是一个SQL语句,用于在树参数第一次初始化后的取值。SQL至少需要包含3个字段,分别是实际值、显示值、上级节点的实际值。默认值可以不写,表示空。在本例中,SQL语句为:select c_resid, c_resalias, c_pid from c_restree where c_resalias='数据源’
- 根节点:树的根节点是一个SQL语句,用于从数据库中检索出树的最顶层节点。SQL至少需要包含2个字段,分别是实际值、显示值。在本例中,SQL语句为:select c_resid, c_resalias from c_restree where c_resalias='数据源’
- 允许多选:如果选择这个选项,则用户可以在树上勾选多个节点,反之只能勾选一个。
- 自动勾选子孙:如果选择了这个选项,则用户在勾选当前节点的同时,会自动勾选该节点的子孙节点。
- 动态加载子节点:如果选择了这个选项,则当用户在点击下一层的(>)号的时候,才去获取子成员;反正则在初始化时初始化整颗树。
- 检测子节点:如果选择了这个选项,则当用户展开下一层的时候,会判断这些新展开的成员是否有子节点,并以(>)(∨)区分,对于标记为(∨)的节点,不会再展开;反之,则统一展示(>),用户展示此节点时,都执行备选值查询语句。
- 自定义父子关系:如果不勾选这个选项,默认情况下,父节点的实际值与备选值SQL语句中的上级节点有对应关系;如果勾选了这个选项,则需要从备选值SQL中再找一个字段,将这个字段的值代入备选值SQL去过滤子节点。这时备选值语句中必须含有where部分,并且将要代入值的位置用(?)标识。例如:select c_resid, c_resalias, c_pid from t_restree where c_pid=?
3) 参数设置的第三步界面,需要从查询包含的字段中挑选出备选值、默认值、根节点的实际值、显示值。设置好后点击【保存】按钮退出。
2.准备好数据集
在本例中,此灵活分析使用示例库中的可视化查询“动态标题的查询”来创建。
查询路径:根目录 > 功能演示 > 查询定义> 可视化查询 > 演示参数相关查询 > 带有树控件参数查询(知识库)
查询说明:此查询输出“资源别名”、“资源ID”和“资源描述”3个字段。查询中引用了上一步创建的”资源树选择”参数,并按资源的父ID过滤数据。
查询界面:
3.创建报表
新建报表,从弹出的资源树中找到上一步准备的数据集。单击”资源树选择”参数的下拉按钮,得到如下图的结果。
树形参数控件支持的操作如下:
- 直接勾选:勾选当前节点。如果参数设置中设置了【自动勾选子孙】,则会自动选中其下的所有子孙节点
- 直接取消勾选:取消选择当前节点。如果参数设置中设置了【自动勾选子孙】,则级联取消其下所有子孙节点
- “选择当前层节点”菜单:勾选当前节点所在层次的所有节点。
- “取消选择当前层节点”菜单:取消勾选当前节点所在层次的所有节点。
- “选择下一层节点”菜单:勾选当前节点的所有子节点。
- “取消选择下一层节点”菜单:取消勾选当前节点的所有子节点。
4.点击【保存】按钮,保存灵活分析。