历史版本24 :动态数据表和动态条件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

在数据集查询中,数据表,数据列以及条件都可以是动态的,下面我们来介绍动态数据表和动态条件,动态数据列实现方式有两种,下面有章节专门介绍。

2. 动态表编辑

2.1 实现思路

  • 使用 TABLEDATAFIELDS() 公式获取数据集每一列的列名

  • 使用 ds1.select() 公式获取对应列的内容。关于 ds1.select() 公式的使用,请参见 ds1.select()和ds1.group()函数的使用 。

2.2 示例

2.2.1 数据准备

在 FineReport 设计器中,点击文件>新建普通报表,新建模板数据集 ds1 ,SQL 语句为:select * from ${table}

如下图所示:

1572253960379582.png

2.2.2 模板设计

1)鼠标右键点击 A1 单元格,选择单元格元素>插入公式,公式为:TABLEDATAFIELDS("ds1")

鼠标右键点击 A2 单元格,选择单元格元素>插入公式,公式为:ds1.select(A1)

1572255377766170.png

2)选中 A1 单元格,在右侧属性面板单元格属性>扩展>扩展方向中选择「横向」;

选中 A2 单元格,在右侧属性面板单元格属性>扩展>扩展方向中选择「纵向」。

下图为 A1 单元格的设置步骤,其中 A2 单元格设置步骤与 A1 单元格相同。如下图所示:

1572255479520837.png

2.2.3 参数面板

1)在参数面板中添加参数「table」,如下图所示:

1572256773470787.png

2)控件选择「下拉框控件」,控件值为「sale」;

数据字典设置时类型设置选择为「公式」,实际值的公式为:TABLES("FRDemo")

如下图所示:

1572257273750091.png

2.2.4 预览效果

1)PC 端

1572260046492278.gif

2)移动端

1)APP

1572257905457624.gif


3)HTML5

1572258435571819.gif

3. 动态条件编辑

若您对表中的数据进行过滤时,查询条件是不确定的,有时候想用 A 列进行过滤,有时候想用 B 列进行过滤,此时要如何实现呢?

3.1 实现思路

在定义数据集时,将条件定义为两个参数,一个是数据表字段名,一个是字段值。

如 SQL 语句定义成:SELECT * FROM 销量 where 1=1 ${if(len(name)==0||len(value)==0,"","and "+name+"='"+value+"'")}

3.2 示例

1)打开模板

打开模板:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\动态表.cpt

2)修改数据集

将数据集 ds1 修改为:SELECT * FROM 销量 where 1=1 ${if(len(name)==0||len(value)==0,"","and "+name+"='"+value+"'")} ,如下:

222

注:1=1 表示默认查询出全部信息。

${if(len(name)==0||len(value)==0,"","and "+name+"='"+value+"'")}  表示定义两个参数 name 和 value,分别表示字段名和值。

当参数框里都有值时,拼接上and条件,即 and name='value';当参数框里没有值时,拼接上空字符串。

3)修改参数界面

将参数界面的文本控件table的控件名改为 name,标签控件的控件值改为字段名:

添加一个标签控件,控件值为:值:,添加一个文本控件 value,如下:

222

4)修改模板

删掉第1、2、3行,模板设置如下:

222

3.3 效果查看

1)PC 端预览效果

保存模板点击分页预览,输入动态的查询条件如:字段名为【地区】,值为【华北】,便可以获取地区为华北的数据了,效果如下图:

222

 注:字段名框中输入的内容必须为数据表的字段名,否则报错!且两个框中都输入内容才可进行条件查询,否则查询全部信息。

2)App 预览效果
222

3)H5预览效果

222

4. 已完成模板编辑

1)动态表

在线查看模板效果请点击 动态表.cpt

已完成模板,可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\动态表.cpt

点击下载模板

2)动态参数

在线查看模板效果请点击 动态条件.cpt

已完成模板,可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\动态条件.cpt

点击下载模板