近排自己學習了一款軟體finereport開發報表模塊,自己總結瞭如何瞭解需求,分析需求,再進行實踐應用開發,最後進行測試數據的準確性,部署報表到項目對應的模塊中顯示。 一、需求(根據需求文檔分析) 1.條件塊: 2.數據塊(一部分): 3.數據取值: 數據源全部來自EAS。通過“物料收發事物彙總” ...
近排自己學習了一款軟體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提供更加方便,也更加迅捷。
一句話:開發重規範,學習重思考,學習、工作、生活多總結!