题目
模板效果:
实现功能:
班级,学号实现参数联动
班级为下拉框,学号为复选框,使用sql中定义参数
实现参数为空选出全部的功能,班级为空选出全部班级,学号为空,选出班级下的所有学生
选出全部班级时数据按班级分组显示
实现页面数据居中显示
使用数据:
FRDemo中的Stscore表
解题过程
1.创建数据集ds1
select * from Stscore
where 1=1
${if(len(CLASSNO) == 0,"","and CLASSNO = '" + CLASSNO + "'")}
${if(len(STUDENTNO) == 0,"","and STUDENTNO in ('" + replace(STUDENTNO,",","','") + "')")}
由于参数控件为复选框,因此数据集中参数需用 in 语句
2.设计表格
设计表格样式并将对应字段拖入对应单元格
单元格属性设置
单元格 | 属性设置 |
---|---|
A1 | 动态班级名称显示, 插入公式:=$$classno ;扩展方向:纵向;父子格:自定义跟着A2 |
B2 | 课程名称显示; 扩展方向: 横向;父子格:默认 |
A3 | 学生姓名显示; 扩展方向:纵向;父子格:默认 |
B3 | 学生成绩显示;扩展方向:纵向;父子格:默认 |
3.新建参数模板
3.1 添加参数控件
编辑参数面板,点击右侧控件设置上方的全部添加,生成参数控件,点击classno参数,选择单选控;点击studentno参数框,选择下拉复选框控件。
3.2 添加参数框选项数据集
3.2.1 班级号选项 classno
新建数据集 classno,SQL语句:select distinct classno from stscore, 因为地区是第一个参数,可以任意选择,所以不需要联动过滤,此处distinct 关键字是为了去重
3.2.2 学号选项 studentno
新建数据集 学号选项,SQL 语句为:
select distinct studentno from stscore
where 1=1
${if(len(classno)== 0,"","and classno = '"+classno + "'")}
因为学号需要根据班级值的不同显示相应学生姓名,所以需要设置classno作为过滤参数,如下图所示
3.3 设置参数控件的数据字典
1)选择 classno 单选控件 设置数据字典
2)选择 studentno 复选框控件 设置数据字典
3.4 设置页面居中
效果预览
复选
单选某个班级
全部不选中
(回复一下,很多人在评论里面问 为什么没有分组,要注意检查一下学号是否设置了左上父格都用的班级号所在格子)