需求:當一個Report的源數據很大的時候,報表顯示‘select *from A’ 這樣的數據時就會造成效率低下。其實很多時候用戶想看的也就是最近的數據,比如昨天。針對這個需求,可以對報表做下面的開發。用JS實現日期提示默認為昨天。
步驟1:添加一個提示頁面,在頁面上拖入相應的控件,如圖

先刪除提示頁面的所有內容(下面的提示控件以及日期標注,這個時候提示頁面只是一個過渡作用,作用是讓日期默認為昨天,沒有顯示的必要)
步驟2:最重要的就是JS1和JS2里面的內容了,還有開始日期begindate和enddate的名稱需要加一個1,但是參數名稱還是和報表頁面保持一致為
begindate和enddate,目的是為了理清對象。如圖所示

JS1處代碼為:
<div style="display:none">
JS2處代碼為:
<script>
function getyesterday()
{
var dtToday = new Date();
var dtYesterday = new Date( dtToday - 86400000 );
var strYesterday = [dtYesterday.getUTCFullYear(), dtYesterday.getMonth()+1, dtYesterday.getDate()].join("-");
return strYesterday;
}
function getyesterdaybeforeamonth()
{
var dtToday = new Date();
var dtYesterday = new Date( dtToday - 86400000 );
dtYesterday.setMonth(dtYesterday.getMonth()-1);
var stryesterdaybeforeamonth= [dtYesterday.getUTCFullYear(), dtYesterday.getMonth()+1, dtYesterday.getDate()].join("-");
return stryesterdaybeforeamonth;
}
function init()
{
pickerControlbegindate1.setValue( getyesterday());--給開始日期賦值
pickerControlenddate1.setValue( getyesterday() );--給結束日期賦值
promptButtonFinish();--自動提交
}
</script>
<body onload="init()">
</body>
</div>
需要再次注意的是日期提示控件一定要在<div>里面,確保不再提示頁面顯示。賦值的那些可以根據具體需求定義。
運行Report:結果如下

在過濾器內把日期過濾設為必須,這樣報表運行結果展現出來的就是昨天的數據,現在是北京時間2012-10-17 16:29:48。
提高效率的同時+滿足用戶需求。
