反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

查询不同时间周期的数据

  • 文档创建者:吴凡
  • 历史版本:6
  • 最近更新:Leo.Tsai 于 2021-06-02
  • 1. 概述

    1.1 问题描述

    决策报表查询指定区间日期数据时,希望可以通过点击按钮( 不在参数面板 )查询到最近的数据,例如:近7天、近14天等等。

    如下图所示:

    12.gif

    1.2 解决思路

    直接将开始和结束的两个日期控件拖入到 body 中,并添加一个按钮控件。

    给按钮控件设置 JS 点击事件,点击按钮后,对开始日期控件赋值,将日期传递到数据集的 SQL 语句中,查询对应的数据。

    2. 示例

    2.1 报表设计

    1)新建决策报表,新建数据集 ds1,SQL查询语句如下:

    SELECT * FROM 订单 where 1=1 

     ${if(len(starttime)=0,""," and 订购日期>='"+starttime+"'")}

     ${if(len(endtime)=0,""," and 订购日期<='"+endtime+"'")}

    Snag_fd08582.png

    2)如下图设计报表样式:

    1584000212488708.png

    3)如下图绑定折线图数据:

    Snag_fd7d2f4.png

    4)选中开始时间日期控件,控件名称重命名为starttime,设置一个默认的日期控件值,如下图所示:

    Snag_fd94f24.png

    5)选中结束时间日期控件,控件名称重命名为endtime,设置一个默认的日期控件值,如下图所示:

    Snag_fdd3c45.png

    6)以近七天按钮为例,添加 JS 点击事件,近14天按钮同理设置,只需要改下定义开始时间的公式即可。

    Snag_fddba1f.png

    JS 代码如下:

    var K1='${=date(2011,6,22)-7}';//定义开始时间
    //alert(K1);
    _g().getWidgetByName("starttime").setValue(K1);//把K1值赋给开始时间控件
    _g().getWidgetByName("starttime").fireEvent("afteredit");//触发开始控件的编辑后事件

    2.2 效果预览

    1)PC端

    保存报表,点击PC端预览,效果如 1.1 节所示。

    2)移动端

    1584001760758706.gif

    3. 模板下载

    已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\frm\决策报表按钮查询最近日期的数据.frm

    点击下载模板:决策报表按钮查询最近日期的数据.frm

    4. 动态获取结束时间

    如果想要今天作为结束日期,然后往前推 7 天,这样动态的最近 7 天该如何实现呢?

    只需要将上面示例中按钮的点击事件代码替换成:

    var mydate = new Date(); //创建日期对象,返回值为当前日期(包含时分秒)
    var K1 = new Date();//用来处理前七天的日期
    K1.setDate(K1.getDate()-7); //设置日期对象中的“日”,为当前日-7
    //alert(K1);
    _g().getWidgetByName("starttime").setValue(K1);//把K1值赋给开始时间控件
    _g().getWidgetByName("starttime").fireEvent("afteredit");

    _g().getWidgetByName("endtime").setValue(mydate);//把K1值赋给结束时间控件
    _g().getWidgetByName("endtime").fireEvent("afteredit");
    //触发开始控件的编辑后事件

    附件列表


    主题: 决策报表应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

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

    总裁办24H投诉

    热线电话:173-1278-1526