反馈已提交

网络繁忙

动态数据表和动态条件

  • 文档创建者:天玑科技-叶然
  • 编辑次数:34次
  • 最近更新:RosieY 于 2022-02-22
  • 1. 概述

    1.1 版本

    报表服务器版本
    功能变更
    11.0--

    1.2 功能简介

    在数据集查询中,数据表,数据列以及条件都可以是动态的,动态数据列实现方式有两种方法,下面我们将分别介绍动态数据表和动态条件。

    2. 动态数据表

    2.1 应用场景

    动态数据表用于动态对数据库中的表进行查询。

    2.2 实现思路

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

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

    2.3 示例

    2.3.1 数据准备

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

    2.3.2 模板设计

    1)鼠标右键点击 A1 单元格,选择「单元格元素>插入公式」,公式为:TABLEDATAFIELDS("ds1")。如下图所示:

    2021-06-21_9-16-00.png

    2)鼠标右键点击 A2 单元格,选择「单元格元素>插入公式」,公式为:ds1.select(A1) 。如下图所示:

    2021-06-21_9-18-53.png

    3)选中 A1 单元格,在右侧属性面板「单元格属性>扩展>扩展方向」中选择「横向」,选中 A2 单元格,在右侧属性面板「单元格属性>扩展>扩展方向」中选择「纵向」。下图为 A1 单元格的设置步骤,其中 A2 单元格设置步骤与 A1 单元格相同。如下图所示:

    2021-06-21_9-21-50.png

    2.3.3 参数面板

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

    2021-06-21_9-24-07.png

    2)控件选择「下拉框控件」,设置控件值为「sale」。数据字典的类型设置选择为「公式」,实际值的公式为:TABLES("FRDemo")。如下图所示:

    2021-06-21_9-30-45.png

    2.3.4 效果预览

    1)PC 端

    PC 端效果如下图所示:

    动画.gif

    2)移动端

    App 及 HTML5 端效果如下图所示:

    3. 动态条件

    3.1 应用场景

    动态条件用于对表中的数据进行过滤时,并且查询条件是不确定时使用。例如:有时想用 A 列进行过滤,有时想用 B 列进行过滤。

    3.2 实现思路

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

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

    3.3 示例

    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行,重新设计表格样式,如下图所示:

    其中红色箭头是因为加了过滤条件,当 A3 单元格为空值则隐藏该行,为了实现当参数查询无数据时则不显示报表内容。


    3.3 效果预览

    1)PC 端

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


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

    2)移动端

    App 及 HTML5 端效果如下图所示:

    4. 模板下载

    1)动态数据表

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

    点击下载模板:动态数据表.cpt

    2)动态条件

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

    点击下载模板:动态条件.cpt

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭