反馈已提交

网络繁忙

文本域控件实现多值查询

  • 文档创建者:zsh331
  • 历史版本:21
  • 最近更新:HeroZ 于 2023-01-31
  • 1. 概述

    1.1 版本

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

    1.2 预期效果

    当用户需要对表中的同一字段实现多值查询时,可以使用文本域控件。如下图所示,当文本域参数有多个订单 ID 时,查询结果为多个订单 ID 的信息,如下图所示:

    1606293195108447.png

    1.3 实现思路

    用户可通过两种方法实现文本域控件多值查询,采用报表的过滤功能设置过滤条件,或通过 SQL 语句过滤。

    2. 示例一:添加过滤条件实现

    2.1 设计报表

    1)新建普通报表,选择「数据库查询」,新增数据集 ds1,SQL 语句为:SELECT * FROM 订单

    2)将数据集 ds1 的字段拽入报表单元格中,设计表格样式。如下图所示:

    image.png

    3)选中表格中的 A2 单元格,点击「条件属性」,点击「+」,属性选择「背景」,颜色选择紫色,类型选择「公式」,设置为「当前行」,公式为 row() % 2 = 0,点击「增加」。如下图所示:

    1625132403(1).jpg

    2.2 添加文本域控件

    在参数面板中,添加「文本域控件」和「查询按钮」,将「文本域控件」控件名称设置为 AK ,如下图所示:

    1624412221670471.png

    2.3 添加过滤

    双击 A2 单元格,点击「过滤」,类型选择「公式」,公式内容为:INARRAY($$$, split($AK, "\n")) > 0,点击「增加」和「确认」。公式的作用为将文本域控件里的文字,按照换行符进行分割,每行为一个查询值,并匹配当前单元格内容是否为文本域控件中输入的其中一个值。如下图所示:

    2021-06-23_9-38-12.png

    2.4 效果预览

    2.4.1 PC 端

    保存模板后,点击「分页预览」,在「文本域控件」中输入订单 ID ,PC 端效果如下图所示:

     1604299689200349.gif

    2.4.2 移动端

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

    2021-01-24_21-13-18.gif

    3. 示例二:通过 SQL 语句实现

    3.1 新建数据集

    新建普通报表,选择「数据库查询」,新建数据集 ds1 ,SQL 语句通过 in 查询文本域控件中以换行输入的订单 ID 的数据,并使数据在数据集中过滤。SQL 语句为:SELECT * FROM [订单] where 1=1  ${if(len(AK)>0," and 订单id in ('" +replace(AK, "\n","','")+ "')","")},公式的作用为调取表中订单 id 的值与参数 AK 的值相同的行,按照换行符进行分割,每行为一个查询值。如下图所示:

    2021-06-23_9-45-56.png

    3.2 设计报表

    1)将数据集 ds1 的字段拽入报表单元格中,设计表格样式。

    1625126191160187.png

    2)选中表格中的第 2 行,点击「条件属性」点击「+」,属性选择「背景」,颜色选择紫色,类型选择「公式」,公式为 row() % 2 = 0,点击「增加」。如下图所示:

    1625132403(1).jpg

    3.3 添加参数控件

    点击「参数面板」,选择「全部添加」,选择「文本域控件」,删除「标签控件」。如下图所示:

    2021-06-23_9-49-00.png

    3.4 效果预览

    1)保存报表后,PC 端预览效果,如 2.4 节所示。

    2)App 及 HTML5 端预览效果,如 2.4 节所示。

    4. 注意事项

    问题描述

    有时用户默认文本中含有多余内容,需要只针对每条记录中的部门内容进行过滤,这种情况直接查询将会无法显示。

    解决方案

    若默认文本中含有多余内容,需要只针对每条记录中的部门内容进行过滤,就需要对内容值进行处理,再进行数据过滤查询。如下图所示:

    具体步骤如下所示:

    在参数面板另外创建一个「文本域控件」用于对内容值进行处理,将第一个「文本域控件」的控件名称为 KKK ,控件值为「字符串」;第二个「文本域控件」的控件名称为 AK ,控件值为「公式」,公式为:JOINARRAY(MAPARRAY(split($KKK,"\n"),INDEXOFARRAY(split(item,"-"),2)),"\n") 。如下图所示:

    2021-06-23_10-13-14.png

    保存报表,点击「分页预览」即可。

    5. 模板下载

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\文本域控件实现多值查询-过滤条件.cpt

    %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\文本域控件实现多值查询-SQL 语句.cpt

    点击可下载模板:

    文本域控件实现多值查询-过滤条件.cpt

    文本域控件实现多值查询-SQL 语句.cpt

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持