一.报表动态查询
1.前台提交部分
var url= 'frameset?__report=fa/detailSaleOnPassReport.rptdesign';var fbegdate = queryTBar.find('name', 'fbegdate')[0].getValue();var fenddate = queryTBar.find('name', 'fenddate')[0].getValue();if( !Ext.isEmpty(fbegdate)){ src = src + '&fbegdate=' + Ext.util.Format.date(fbegdate, 'Y-m-d'); }if( !Ext.isEmpty(fenddate)){ src = src + '&fenddate=' + Ext.util.Format.date(fenddate, 'Y-m-d'); }window.location = url
2.报表部分
(1)在报表设计器里的Report paramenters 里面新建参数。
参数名称要与url传递来的参数一致。顺便把 Is Required 选项去掉。
(2)在设计器面板,选择Data Set 然后点击Script
在before open面板中获取参数,并拼写where条件
var where_sql = "1=1";var fbegdate = reportContext.getParameterValue("fbegdate");var fenddate = reportContext.getParameterValue("fenddate");if(fbegdate!=null && fbegdate!=""){ where_sql += " and a.fbilldate >= to_date('"+fbegdate+" 00:00:00','yyyy-mm-dd hh24:mi:ss') ";}if(fenddate!=null && fenddate!=""){ where_sql += " and a.fbilldate <= to_date('"+fenddate+" 23:59:59','yyyy-mm-dd hh24:mi:ss') ";}var tmp_sql = this.queryText.replace("1=1",where_sql);this.queryText = tmp_sql;
以上方式是简单的通过设计器处理。以后再尝试使用Birt API来处理。
二.表样设置