反饋已提交
網絡繁忙
在数据集查询中,数据表,数据列以及条件都可以是动态的,下面我们来介绍动态数据表和动态条件,动态数据列实现方式有两种,下面有章节专门介绍。
使用 TABLEDATAFIELDS() 公式获取数据集每一列的列名
使用 ds1.select() 公式获取对应列的内容。关于 ds1.select() 公式的使用,请参见 ds1.select()和ds1.group()函数的使用 。
在 FineReport 设计器中,点击文件>新建普通报表,新建模板数据集 ds1 ,SQL 语句为:select * from ${table}
如下图所示:
1)鼠标右键点击 A1 单元格,选择单元格元素>插入公式,公式为:TABLEDATAFIELDS("ds1");
鼠标右键点击 A2 单元格,选择单元格元素>插入公式,公式为:ds1.select(A1)。
2)选中 A1 单元格,在右侧属性面板单元格属性>扩展>扩展方向中选择「横向」;
选中 A2 单元格,在右侧属性面板单元格属性>扩展>扩展方向中选择「纵向」。
下图为 A1 单元格的设置步骤,其中 A2 单元格设置步骤与 A1 单元格相同。如下图所示:
1)在参数面板中添加参数「table」,如下图所示:
2)控件选择「下拉框控件」,控件值为「sale」;
数据字典设置时类型设置选择为「公式」,实际值的公式为:TABLES("FRDemo")。
1)PC 端
2)移动端
1)APP
3)HTML5
若您对表中的数据进行过滤时,查询条件是不确定的,有时候想用 A 列进行过滤,有时候想用 B 列进行过滤,此时要如何实现呢?
在定义数据集时,将条件定义为两个参数,一个是数据表字段名,一个是字段值。
如 SQL 语句定义成:SELECT * FROM 销量 where 1=1 ${if(len(name)==0||len(value)==0,"","and "+name+"='"+value+"'")}。
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+"'")} ,如下:
注:1=1 表示默认查询出全部信息。
${if(len(name)==0||len(value)==0,"","and "+name+"='"+value+"'")} 表示定义两个参数 name 和 value,分别表示字段名和值。
当参数框里都有值时,拼接上and条件,即 and name='value';当参数框里没有值时,拼接上空字符串。
3)修改参数界面
将参数界面的文本控件table的控件名改为 name,标签控件的控件值改为字段名:。
添加一个标签控件,控件值为:值:,添加一个文本控件 value,如下:
4)修改模板
删掉第1、2、3行,模板设置如下:
1)PC 端预览效果
保存模板点击分页预览,输入动态的查询条件如:字段名为【地区】,值为【华北】,便可以获取地区为华北的数据了,效果如下图:
注:字段名框中输入的内容必须为数据表的字段名,否则报错!且两个框中都输入内容才可进行条件查询,否则查询全部信息。
2)App 预览效果
3)H5预览效果
1)动态表
在线查看模板效果请点击 动态表.cpt
已完成模板,可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\动态表.cpt。
点击下载模板
2)动态参数
在线查看模板效果请点击 动态条件.cpt
已完成模板,可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\动态条件.cpt。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉