運用 finereport 和 oracle 結合開發報表思路大總結


 

  近排自己學習了一款軟件finereport開發報表模塊,自己總結了如何了解需求,分析需求,再進行實踐應用開發,最后進行測試數據的准確性,部署報表到項目對應的模塊中顯示。

一、需求(根據需求文檔分析)

  1.條件塊:

    

  2.數據塊(一部分):

    

  3.數據取值:

    數據源全部來自EAS。通過“物料收發事物匯總”查詢,查詢每一天的數據,填寫到當天時間對應的行中。取數列為“基本數量”。

    等等的倉庫數據。

二、使用finereport軟件進行頁面模板布局

  1.使用.frm的模板開發(本案例)

    

    模板的原則就是沒有數據,只是一個簡單頁面顯示,也是方便進行下次運用數據庫的方便。(簡單的說,就是建樓,先建立框架先)

   預覽效果:

    

三、運用PL\SQL developer進行sql語句查詢(以下截圖僅僅是一部分)

   1.明確數據來源那一張表、需要關聯那些表、怎么關聯

    

 

   2.明確頁面顯示格式、顯示的查詢條件格式、數據顯示格式、后台sql顯示數據和頁面顯示數據的差別

    

 

   3.明確根據頁面顯示的名字進行重命名(case ---when  ---then----end)

    

 

   4.sql查詢的字段數(字段條件(多個)+數據(一個)),出現多列

    

四、數據部署在finereport

  1.了解sql在oracle和finereport的區別

    將對應的相關的語法進行分析,改其不同即可。

  2.轉換數據條件

    

    實現頁面上的查詢條件的時間空間顯示

  3.效果finereport運行sql預覽

    

 

  4.條件過濾設計

    

  下拉框條件顯示

    

   頭條件的設計

    

  5.導出設計和查詢設計

    導出:

    查詢:設計同上,代碼如下:

var firstdate = this.options.form.getWidgetByName("firstdate").getValue(); 

var lastdate = this.options.form.getWidgetByName("lastdate").getValue();
if( firstdate == "" || firstdate==null){ //判斷開始日期是否為空
alert("錯誤,開始時間不能為空"); //開始日期參數為空時提示
return false;
};
if(lastdate == "" || lastdate==null){ //判斷結束日期是否為空
alert("錯誤,結束時間不能為空"); //結束日期參數為空時提示
return false;
};
if( firstdate > lastdate){ //判斷開始日期是否大於結束日期
alert("錯誤,開始時間不能大於結束時間"); //開始日期大於結束日期時提示
return false;
}
//判斷結束日期是否大於當前時間
var date = new Date();
var seperator1 = "-";
var seperator2 = ":";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
if(lastdate>currentdate){
alert("結束日期不能超過當前日期!");
return false;
}

  6.頁面顯示

    

 

五、數據校對

  1.根據需求文檔查詢數據

    

  2.校對官方數據與本地數據(要求原則:顯示的數據全部要驗證)

六、部署項目

   1.創建jsp頁面

   

 

  2.部署頁面以及報表(同步到服務器即可“SVN同步”)

    

 

  3.預覽效果

    

 

七、總結

  從開發需求到需求實現,邏輯總的而言不是非常復雜,但在校對數據的准確性上就是相當大的工作量。正確了固然是快,但是數據有誤的時候,要分析數據的錯誤源工作量相對巨大,因素是

錯誤源很多(倉庫編碼、物料編碼、組織編碼、條件屬性(啟動、確定、激活等)等出錯、別名改錯、關聯出錯(inner join;left join ;right join)、sql條件控制出錯、finereport的條件屬性出錯等等)。

如果最終實現了數據在項目報表上實現,並且數據准確無誤,那么你就完成這個需求的開發。我在報表的開發模塊上明白,你要完成一項工作,必須要自己思考如何實現,多問幾個為什么,也許你的答案就出來了,

在開發的同時也要注重開發的規范性,養好良好開發習慣,為后期維護和同事學習修改提供方便,也為自己的修改bug提供更加方便,也更加迅捷。

  一句話:開發重規范,學習重思考,學習、工作、生活多總結!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM