反馈已提交

网络繁忙

文本框实现范围查询

  • 文档创建者:古都
  • 编辑次数:8次
  • 最近更新:小羔 于 2022-03-30
  • 1. 概述

    1.1 应用场景

    用户在输入空值时查询全部数据,输入单值时查询该值对应数据,输入范围(用任意字符分隔两个数字即可)时查询范围内数据。如下图所示:

    注:范围数据的分割符可以使用除数字外的任意字符。
    BC903B2D-F269-4852-8F52-06CE9ECAAFD5.GIFimage.png

    1.2 实现思路

    利用正则表达式匹配捕捉范围输入的值,并将这两个数字代入 SQL 中运算。

    2. 需要安装插件

    2.1 安装插件

    实现该功能需要提前安装「常用函数集合插件」。

    点击下载插件:常见函数集合

    设计器插件安装方法参照:设计器插件管理

    服务器安装插件方法参照:服务器插件管理

    2.2 准备数据

    新建普通报表,新建数据集 ds1,数据库查询语句为:

    select * from 销量 ${if(len(销量)==0,"",if(len(p)==1,"where 销量 ="+销量,"where 销量 between "+indexofarray(p,1)+" and "+indexofarray(p,2)))}

    其中参数p需要设置公式默认值:stringfetch($销量,"\\d+")

    注:默认值公式的使用可以参见文档:常见函数集合插件,此函数可以返回使用正则表达匹配到的数据,结果为一个数组。

    Snag_571ba6f.png

    2.3 设计报表

    如下图设计报表:

    Snag_5770bb3.png

    2.4 添加控件

    1)将参数销量添加到参数面板,控件类型选择文本控件。如需设置输入规则,可以参考正则表达式文档,此处不做设置。

    Snag_577ce38.png

    2)设计器菜单栏点击模板>模板参数,设置模板参数p,默认值为公式:stringfetch($销量,"\\d+")

    Snag_57a345b.png

    2.5 效果预览

    1)PC 端

    保存报表,点击分页预览,效果如下图所示:

    BC903B2D-F269-4852-8F52-06CE9ECAAFD5.GIF

    2)移动端

    移动端效果如下图所示:

    1583826938495759.gif

    3. 无需安装插件

    注:此方法无需安装「常用函数集合插件」,且支持小数,负数区间查询。

    3.1 准备数据

    新建模板,新建数据集 ds1,SQL 语句为:

    select * from 销量 ${if(len(range_z)==0,"",if(len(split(range_z,"~"))==1,"where 销量 ="+range_z,"where 销量 between "+indexofarray(split(range_z,"~"),1)+" and "+indexofarray(split(range_z,"~"),2)))}

    其中定义了一个数据集参数 range_z,「~」代表数据范围分隔符,可根据实际情况选择合适的分隔符,尽量避开「+-*/」等特殊字符,推荐「~、_」符号。

    3.2 添加控件

    在参数面板中添加销量「标签控件」、「查询按钮」、「文本控件」,控件名称为 range_z ,和数据集参数一致即绑定。如下图所示:

    3.3 设计报表

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

    3.4 效果预览

    1)PC 端

    保存模板,点击「分页预览」。效果如下图所示:

    Jun-15-2021 14-15-56.gif

    2)移动端

    移动端效果如下图所示:

    Jun-15-2021 14-24-32.gif

    4. 模板下载

    附件列表


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

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

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

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

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

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

    不再提示

    10s后关闭