在大多数情况下,我们并不需要报表把数据库中所有的数据都呈现出来,而是要根据一些条件来过滤出我们想要的数据,这就是参数查询。FineReport报表中就是使用参数来动态的过滤数据的,实现用户和数据的实时交互。
1. 参数设置步骤
参数定义:设置参数名称,添加参数,根据实际情况的不同添加不同种类的参数。
添加控件绑定数据:FineReport参数查询,是在参数面板中添加控件,使控件名字与参数名称一样,通过该控件将其控件值传递给参数,实现动态修改参数值得效果,可为控件绑定数据,直接选择。
参数面板样式设定:设置参数界面中控件的位置,参数面板的位置,背景等等。
2. 分类
按照其使用范围可以分为:模板参数和全局参数;
按照其使用方式不同可以分为:模板参数和数据集参数。
2.1 按照使用范围分类
2.1.1 模板参数
模板参数是指在当前模板下创建的参数,在模板>模板参数中定义,只在当前报表中可以使用,且必须与过滤结合才能筛选数据。
2.1.2 全局参数
全局参数是指在当前工程下创建的参数,在服务器>全局参数中定义,定义方法与模板参数相同,在工程下的所有报表中都可以使用,必须与过滤结合筛选数据。
注:定义的全局参数都保存在finedb的fine_conf_entity表中,若全局参数与模板参数相同,则采用模板参数。
另:按照使用范围划分的参数都必须与过滤条件结合使用。
模板参数与全局参数的区别:
模板参数和全局参数的使用方式一致,但是两者的作用域不同。
全局参数:当前工程应用下的所有模板都可以使用。
模板参数:只有当前模板才可以使用。
2.2 按照使用方式分类
2.2.1 模板参数
同使用范围的参数。
2.2.2 数据集参数
数据集参数就是指在为模板添加数据集的时候添加的参数,一般是指在SQL查询语句中使用动态的参数对数据进行过滤。数据集参数根据使用范围不同分为:
1)模板数据集参数
是指在当前模板的模板数据集中添加的参数,在模板>模板数据集>数据库查询中定义,只在当前报表中可以使用。
2)服务器数据集参数
是指在服务器上数据集中添加的参数,在服务器>服务器数据集>数据库查询中定义,定义方法与数据集参数相同,在工程下的所有报表中都可以使用。
注:1)定义的服务器数据集参数都保存在finedb的fine_conf_entity表中,若服务器数据集参数与报表数据集参数相同,则采用报表数据集参数。
2)数据集参数就是直接取出满足条件的数据,而模板参数是取出全部数据后通过设置过滤条件再获取对应参数的数据,因此若数据量大的情况下使用数据集参数可以提高报表的访问效率。
附:参数为空选择全部
数据集参数:SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}
解释:在订单这张表查询所有字段,条件:当1=1成立时,执行${如果area这个参数长度为零,则为空,否则等于货主地区=参数查询}
模板参数:在修改过滤条件,改为公式:
3. 参数界面设置
3.1 是否显示参数界面
有时用户希望能够自己控制是否显示参数界面,用户可以在访问报表时,在URL后面添加参数&__pi__=false来控制不显示参数面板。通过__pi__参数控制
访问报表时在URL后面加上&__pi__=false就可以强制报表不显示参数界面(报表定义了参数界面且设置了显示参数窗体);
例如:http://localhost:8075/webroot/decision/view/report?viewlet=GettingStarted.cpt&__pi__=false。
注:pi前后都是两个英文的下划线。
3.2 点击查询前显示报表内容
进入参数面板的编辑状态,在属性面板的控件设置中勾去“点击查询前不显示报表内容”,设置如下图:
3.3 其他
可以对参数面板背景,控件位置、大小等进行设置。
4. 日期控件默认值设置为空
修改控件值类型为【公式】,并给控件值输入双引号,如下:
设置模板参数及常用组合:https://help.finereport.com/