文章转自:http://ajavareport.cn/archives/444 
参数校验-日期校验
在使用FineReport[url=http://www.finereport.com/]报表工具[/url]时,内置参数查询界面当中可进行一些数据校验,例如有两个参数:开始时间和结束时间,结束时间必须在开始时间之后,否则进行提示。
1.    在提交按钮的事件编辑中写JS代码
1.1 新建[url=http://www.finereport.com/]报表[/url] 
1.2 模板设计
按照下图设计模板
[img]http://www.finereport.com/forumimages/e179.png[/img] 
1.3 添加数据源
        新建一个名为ds1的数据库查询,SQL语句:SELECT * FROM EMPLOYEE
    1.4 绑定数据列
按照下表进行数据列绑定
[img]http://www.finereport.com/forumimages/e180.png[/img]

双击B5单元格,在过滤页面当中,定义条件类型为单元格 ,添加条件: BIRTHDATE 大于或等于 $begintime AND BIRTHDATE 小于 $endtime
1.5 定义参数
打开菜单栏中[url=http://www.finereport.com/]报表[/url]|报表参数,新定义两个个名为begintime,endtime的参数,如图
[img]http://www.finereport.com/forumimages/e181.png[/img]

1.6 参数设计 
    打开参数设计界面,参数界面布局如下
[img]http://www.finereport.com/forumimages/e182.png[/img]                       
    日期控件设置
右击begintime的控件,选择控件设置,控件类型选择日期,控件名选择begintime,具体设置如下图所示
 
[img]http://www.finereport.com/forumimages/e183.png[/img]
endtime的控件同上
1.7 数据校验
右击查询按钮,选择控件设置,打开控件设置面板,添加点击事件,如下图所示
 
[img]http://www.finereport.com/forumimages/e184.png[/img]
        在function fun(){}函数中写入如下JS语句:
        var start = this.options.form.getWidgetByName("begintime").getValue();
          var end = this.options.form.getWidgetByName("endtime").getValue();
          if( start == ""){
              alert("错误,开始时间不能为空");
              return false;
};
          if(end == ""){ 
              alert("错误,结束时间不能为空");
          return false;
};
          if( start > end){ 
              alert("错误,开始时间不能大于结束时间");
              return false;
}  
1.8 保存并预览
           begintime输入为空,如下图所示
[img]http://www.finereport.com/forumimages/e185.png[/img]
endtime输入为空,如下图所示
 
[img]http://www.finereport.com/forumimages/e186.png[/img]
输入的endtime在begintime之前,校验如下图所示:
 
[img]http://www.finereport.com/forumimages/e187.png[/img]
2.    在参数控件的事件编辑中写JS代码
2.1 设计模板
具体操作同上。
2.2 数据校验
    右击begintime的控件,选择控件设置,添加编辑后事件,如下图所示:
 
[img]http://www.finereport.com/forumimages/e188.png[/img]
         在function fun(){}函数中写入如下JS语句:
         var start = this.options.form.getWidgetByName("begintime").getValue();
         if( start == ""){
             alert("错误,开始时间不能为空");
             return false;
         };
         说明:这段代码是为了验证begintime输入不能为空。
    右击endtime的控件,选择控件设置,添加编辑后事件,如下图所示

 
[img]http://www.finereport.com/forumimages/e189.png[/img]
        在function fun(){}函数中写入如下Js语句:
        var end = this.options.form.getWidgetByName("endtime").getValue();
        if(end == ""){
                alert("错误,结束时间不能为空");
        return false;
};
        if( start > end){
            alert("错误,开始时间不能大于结束时间");
        return false;
}
        说明:这段代码是为了校验endtime输入不能为空以及结束时间大于开始时间。
2.3 保存并预览
        效果与在提交按钮的事件编辑中写JS代码一样