反馈已提交

网络繁忙

文本域控件实现多值查询

  • 文档创建者:zsh331
  • 历史版本:22
  • 最近更新:Fairy.Zhang 于 2024-11-07
  • 1. 概述

    1.1 版本

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

    1.2 应用场景

    当用户需要对表中的同一字段实现多值查询时,可以使用文本域控件。

    当文本域控件内容为空时,查询全部数据;有多个订单 ID 时,查询结果为多个订单 ID 的信息。如下图所示:

    动图3.gif

    1.3 实现思路

    用户可通过两种方法实现文本域控件多值查询。

    示例一:添加模板参数,单元格设置过滤条件实现。

    示例二:使用数据集参数在数据查询的时候即可实现过滤。

    2. 示例一:模板参数实现

    2.1 新建模板

    新建一张普通报表。如下图所示:

    新建普通报表.jpg

    2.2 准备数据

    新建数据库查询 ds1,SQL 语句为:SELECT * FROM 订单。如下图所示:

    1.png

    2.3 设计报表

    A1-G1 单元格输入文本内容,A2-G2 单元格拖入相应的数据列,自行设计报表样式。如下图所示:

    4.png

    2.4 添加模板参数

    点击菜单栏「模板>模板参数」,添加一个模板参数order。如下图所示:

    6.png

    2.5 参数绑定控件

    1)进入参数面板编辑界面,点击右侧的「全部添加」,即可将参数添加至参数面板。如下图所示:

    动图2.gif

    2)参数绑定文本域控件。如下图所示:

    7.png

    3)调整文本域控件的大小及「查询」按钮的位置。如下图所示:

    8.png

    2.6 添加过滤条件

    1)双击 A2 单元格,点击「过滤」,类型选择「公式」。

    2)点击「定义」,输入公式:IF(LEN($order)==0,INARRAY($$$,Split($order, "\n"))=0,INARRAY($$$,Split($order, "\n"))>0),点击「增加」和「确认」。如下图所示:

    注:公式表示如果文本域内容为空,则查询全部数据;否则,将文本域里的文字,按照换行符进行分割,每行为一个查询值,并匹配当前单元格内容是否为文本域控件中输入的其中一个值。

    9.png

    2.7 设置隔行变色

    1)选中 A2 单元格,点击右侧的「条件属性」,添加一个条件属性。

    2)属性选择「背景」,颜色选择紫色,设置为「当前行」。

    3)类型选择「公式」,点击「定义」。输入公式: row() % 2 = 0,点击「增加」。如下图所示:

    10.png

    3. 示例二:数据集参数实现

    3.1 新建模板

    同 2.1 节,此处不再赘述。

    3.2 准备数据

    新建数据库查询 ds1 ,输入SQL 语句:SELECT * FROM 订单 where 1=1  ${if(len(order)>0," and 订单id in ('" +replace(order, "\n","','")+ "')","")}如下图所示:

    注:SQL 语句首先判断文本域控件是否有内容,有内容时,通过 in 查询文本域控件中以换行输入的订单 ID 的数据,并使数据在数据集中过滤;无内容时,则不添加过滤条件,查询全部数据。

    11.png

    3.3 设计报表

    A1-G1 单元格输入文本内容,A2-G2 单元格拖入相应的数据列,自行设计报表样式。如下图所示:

    12.png

    3.4 参数绑定控件

    同 2.5 节,此处不再赘述。

    3.5 设置隔行变色

    同 2.7 节,此处不再赘述。

    4. 效果预览

    1)PC端

    PC端效果如 1.2 节所示。

    2)移动端

    移动端效果如下图所示:

    手机视频动图.gif

    5. 下载模板

    点击下载示例一模板:示例一模板参数实现.cpt

    点击下载示例二模板:示例二数据集参数实现.cpt

    6. 注意事项

    问题描述

    有时用户输入的文本中含有多余内容,此时直接查询将会无法显示数据。

    解决方案

    若用户输入的文本中含有多余内容,则需要排除掉多余内容,只留下有效内容:订单ID。如下图所示:

    具体步骤如下所示:

    1)在参数面板再次添加一个文本域控件,控件名称为KKK,控件值为字符串。如下所示:

    14.png

    2)原来的文本域控件order ,控件值设置为「公式」,输入公式:JOINARRAY(MAPARRAY(split($KKK,"\n"),INDEXOFARRAY(split(item,"-"),2)),"\n") 。如下图所示:

    15.png

    附件列表


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

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

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

    不再提示

    10s后关闭



    AI

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