最新历史版本 :查询不同时间周期的数据 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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");
//触发开始控件的编辑后事件