帆软报表参数
1.FineReport 报表参数分为两种:模板参数和数据集参数。
1.模板参数:是指在当前模板下创建的参数,且必须与过滤条件结合筛选数据。
1)全局参数:当前工程下的所有模板都可以使用。
2)模板参数:只有当前模板才可以使用。
2.数据集参数:新建数据集时,在 SQL 查询语句中定义数据集参数,直接在数据查询时就完成数据的过滤操作。
1)服务器数据集参数:当前工程下的所有报表都可以使用。
2)模板数据集参数:只有当前报表才可以使用。
2. 模板参数示例
2.1 示例效果
文本框中输入「华东」,点击查询,只查询出报表中华东地区的销售信息。
文本框中输入「华北」,点击查询,只查询出报表中华北地区的销售信息。
2.2 数据准备
新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句SELECT * FROM 销量,取出销量表中的所有数据。
2.3 表格样式设计
1)A1~C1 单元格写入表格标题信息,选中 A1~C1 单元格,右边属性面板选择单元格属性>样式,样式下拉框选择预定义样式,给标题设置一个Head类型的样式。
注:设置好 Head 类型的样式后,标题字体会自动居中,无需另外设置。
2)将数据集中的字段拖入到对应单元格中,选中 A2~C2 单元格,将字体居中,选中 A1~C2 单元格,给表格整体添加预定义样式默认的天蓝色内外框。
3)选中 C2 单元格,右边属性面板选择单元格元素>基本。数据设置下拉框选择汇总>求和。
2.4 定义模板参数
1)菜单栏选择模板>模板参数,打开模板参数设置对话框。
2)模板参数对话框点击增加按钮,新建一个模板参数,双击该参数将它重命名为「地区」,设置默认值为「华东」。点击确定完成模板参数的定义。
如果想要修改模板参数名称,只能通过双击原名称进入编辑状态后进行修改,修改完后点击确定即可,如下图所示:
2.5 参数添加控件
1)点击参数面板的编辑按钮,进入参数面板设置界面。
2)右上角控件设置面板会显示没有添加控件的参数,点击地区或者点击全部添加,将参数的默认控件添加到参数面板。
注:参数与控件是通过参数名称进行绑定的,也就是说当控件名称与参数名称一致时,参数与控件就进行了绑定,即在 Web 端给控件赋值就相当于给参数赋值。
3)参数「地区」的默认控件添加到参数面板后,效果如下图所示:
注:如果不想点击「全部添加」或「参数」快捷添加默认控件,也可以直接从控件栏中将控件拖拽到参数面板中,修改控件的名称与参数名称一致,即可将控件与参数进行绑定。
4)点击自定义控件的编辑按钮,选择文本框控件类型,让用户自行输入参数值。
5)将查询按钮往左边拖拽,形成紧凑式布局,让控件面板更加美观。再次点击参数面板的编辑按钮,完成参数控件的设置。
2.6 数据过滤
设置好控件后还不能实现根据文本框中输入的参数值查询指定地区的销售信息。因为数据集中的数据是将数据库中的数据全部取出来,表格的数据来源于数据集,所以需要给表格设置数据过滤条件,当用户在文本框中输入地区参数值点击查询时,表格只显示该地区的销售信息。
双击 A2 单元格,在弹出的数据列对话框中选择过滤,添加一个普通条件,让数据列地区等于参数$地区,点击增加按钮,点击确定。即将地区单元格与参数绑定起来。
3.数据集参数示例
3.1 定义数据集参数
新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句SELECT * FROM 销量 WHERE 地区=\’${地区}\’,在数据库查询语句中定义一个数据集参数「地区」。点击右下角刷新按钮,下方数据集参数管理面板会显示已经新建好的数据集参数「地区」,设置它的默认值为华东。点击确定,即同时完成了数据准备和定义数据集参数的工作。
注1:从数据库中查询取数时,会根据参数值来查询该参数值对应的数据,也就是说在数据准备这一步就已经完成了数据过滤。
注2:在数据集 SQL 语句中,使用 ${para} 做为一个参数宏,其中变量para为参数名,若字段值为字符串则加上引号如\’${para}\’。
3.2 表格样式设计
1)A1~C1 单元格写入表格标题信息,选中 A1~C1 单元格,右边属性面板选择单元格属性>样式,样式下拉框选择预定义样式,给标题设置一个Head类型的样式。
注:设置好 Head 类型的样式后,标题字体会自动居中,无需另外设置。
2)将数据集中的字段拖入到对应单元格中,选中 A2~C2 单元格,将字体居中,选中 A1~C2 单元格,给表格整体添加预定义样式默认的天蓝色内外框。
3)选中 C2 单元格,右边属性面板选择单元格元素>基本。数据设置下拉框选择汇总>求和。
3.3 参数添加控件
1)点击参数面板的编辑按钮,进入参数面板设置界面。
2)右上角控件设置面板会显示没有添加控件的参数,点击地区或者点击全部添加,将参数的默认控件添加到参数面板。
注:参数与控件是通过参数名称进行绑定的,也就是说当控件名称与参数名称一致时,参数与控件就进行了绑定,即在 Web 端给控件赋值就相当于给参数赋值。
3)参数「地区」的默认控件添加到参数面板后,效果如下图所示:
注:如果不想点击「全部添加」或「参数」快捷添加默认控件,也可以直接从控件栏中将控件拖拽到参数面板中,修改控件的名称与参数名称一致,即可将控件与参数进行绑定。
4)点击自定义控件的编辑按钮,选择下拉框控件类型,让用户通过下拉框选择参数值。
5)要想报表预览时点击下拉框可以出现参数值的选项,则需要设置下拉框的数据字典为销量表下的地区字段。
参数面板选中下拉框控件,右边属性面板选择属性>数据字典,点击数据字典编辑按钮,弹出数据字典设置对话框。数据字典的类型设置为数据库表,数据库为FRDemo,选择数据库表为销量,列名实际值和显示值都为地区。
注:使用数据集参数时,控件的数据字典不可使用报表的数据集(此处即为 ds1 ),否则将造成循环引用,使得模板出错。
6)将查询按钮往左边拖拽,形成紧凑式布局,让控件面板更加美观。再次点击参数面板的编辑按钮,完成参数控件的设置。
3.4 带公式的应用
数据集 SQL 查询语句中可以使用参数宏${}动态地生成过滤条件,${}中的语句在 FineReport 报表中执行,将${}的执行结果与 SQL 语句拼接起来形成最终的查询语句,传递给数据库执行,可以使用多个${},如下 SQL 查询语句:
SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,””,”and 货主地区 = \'” + area + “\'”)} ${if(len(province) == 0,””,”and 货主省份 = \'” + province + “\'”)}
${}中可以使用 FineReport 所有内置的公式,如 if 函数;
${}中除了 FineReport 内置的函数名、常量外,其他变量就是数据集参数。
如上 SQL 语句,if 函数是 FineReport 内置的公式,变量 area 就是数据集参数,如果len(area)!=0,即 area 参数不为空,比如说 area 的值为「华东」,那么 if 语句的执行结果为and 货主地区=\’华东\’,然后再把这句话拼接到 SQL 语句当中,SQL 语句就变成:
SELECT * FROM 订单 where 1=1 and 货主地区=\’华东\’
摘自:
参数的种类与区别 https://help.fanruan.com/finereport/doc-view-156.html
模板参数 https://help.fanruan.com/finereport/doc-view-157.html
数据集参数 https://help.fanruan.com/finereport/index.php?doc-view-158.html