表系統(tǒng)介紹
我們都知道,在信息系統(tǒng)開發(fā)過程中,報表占據(jù)著很重要的位置,業(yè)務運營數(shù)據(jù)最后給領導的反應就是那么幾張綜合的業(yè)務數(shù)據(jù)報表,在如何選擇一個合適的報表系統(tǒng)也讓很多開發(fā)員糾結,AgileEAS.NET平臺采用了基于RDL語言的開源報表系統(tǒng)fyireporting,最早基于其2.X版本進行了中文化并和AgileEAS.NET進行集成,到目前為止AgileEAS.NET平臺中集成的是3.96版本,下面展示一下報表在AgileEAS.NET中的一個呈現(xiàn):
wps_clip_image-26064" border="0" src="/up/2010-9/2010914183420626.png" />
AgileEAS.NET平臺對于fyireporting開源項目,只采用了其中的RdlEngine,RdlViewer和ReportDesigner三個項目,對報表設計器和引擎做了如下修改:
1.修改了Excel導出的問題,因為在應用中有大量的需求需要導出報表并要求和打印樣式匹配:
2.修改了PDF文件導出中文的問題。
3.中文化。
4.打印的走紙控制,在企業(yè)應用中,特別是窗口服務應用的同一打印機打多咱票據(jù)的打印走紙控制。
同時,我對fyireporting報表與AgileEAS.NET進行了集成,增加了報表設計器可以根據(jù)ORM實體對象創(chuàng)建報表的設計極報表呈現(xiàn)與ORM實體的數(shù)據(jù)綁定。
制作報表
AgileEAS.NET平臺設計器提供一個非常方便的可以化報表設計器,fyireporting原版本的報表設計器只提供了基于數(shù)據(jù)庫連接的報表設計器,我增加了一個方法,基于AgileEAS.NET平臺的ORM數(shù)據(jù)對象進行報表設計,整合了ORM與報表,下面看看新建一個與數(shù)據(jù)庫相關的報表:
首先設置連接:
選擇數(shù)據(jù)庫表或者編寫報表的查詢語句:
確定之后使用報表設計器設計報表:
預覽報表:
AgileEAS.NET平臺同時提供了一個不需要數(shù)據(jù)庫連接而是基于AgileEAS.NET平臺中的ORM對象設計報表的方法,我們來看一下設計過程:
首先選擇ORM對象的組件及ORM表對象:
確定之后使用報表設計器設計報表:
報表集成
AgileEAS.NET平臺在報表的部署上采用了集成部署的思路,即設計好的報表定義存儲在數(shù)據(jù)庫中,客戶端在使用中讀報表定義并緩存在客戶端,平臺中增加了一個報表管理的應用插件報表管理:用于管理系統(tǒng)中的所有報表。
開發(fā)人員可以使用獨立的報表設計器設計好報表,然后在報表管理中新建一個報表并且導入報表定義。
新建報表:
導入報表定義,可以根據(jù)設計好的報表定義文件導入,也可以直接從報表設計器Copy報表定義源碼:
開發(fā)員人也可以直接使用集成的報表設計器進行報表設計:
報表管理模塊集成的報表設計器是一個相獨立的報表設計器相比更加簡潔,這個報表設計器不像獨立的報表設計,最后把結果保存到報表定義文件,而是直接保存到AgileEAS.NET的報表定義數(shù)據(jù)庫中。
程序中使用報表
AgileEAS.NET平臺提供了一個報表打印/預覽控件與報表打印/預覽窗口,開發(fā)人員可以根據(jù)需要情況彈出的打印窗體還是使用可以嵌入在應用界面中的打印控件。
因為報表定義是在數(shù)據(jù)庫中,所以在報表打印前需要賦予報表打印控件報表定義和報表的數(shù)據(jù)源,我們在平臺的報表管理中定義了一個IRportEx接口,用于存儲報表定義,下面演示一個使用彈出窗體的報表打印例子:
//報表對象
IReportEx report = DALHelper.DALManager.CreateReportEx();
report.Session = ContextHelper.Session;
report.Name = "診療項目列表";
report.Refresh();
//綁定到報表的數(shù)據(jù)對象(ORM表對象)
IItemInfoPrintList pl = this.itemList.GetPrintList();
//打印對話框
RDLViewDialog printForm = new RDLViewDialog();
//綁定報表定義
printForm.Report = this.Report;
//綁定打印數(shù)據(jù)
printForm.DataObject = pl;
//預覽打印
printForm.PrintPreview();
以上代碼效果如下圖:
使用AgileEAS.NET平臺提供的報表打印控件的使用方法同彈出式打印窗口,代碼如下:
//報表對象
IReportEx report = DALHelper.DALManager.CreateReportEx();
report.Session = ContextHelper.Session;
report.Name = "演示報表";
report.Refresh();
//綁定到報表的數(shù)據(jù)對象(ORM表對象)
IIteminfoList dataList =
EAS.Exam.DAL.Interface.DALHelper.DALManager.CreateIteminfoList();
dataList.Session = ContextHelper.Session;
dataList.GetIteminfoList(string.Empty, this.tbName.Text);
//綁定報表定義
this.reportViewer.Report = this.Report;
//綁定打印數(shù)據(jù)
this.reportViewer.DataObject = pl;
以上代碼執(zhí)行效果如下圖:
在AgileEAS.NET平臺的應用項目開發(fā)中,我們建設使用這種模式的報表開發(fā),簡單、直觀,在我們的開發(fā)實踐中,我們也可以使用這種方式代替數(shù)據(jù)查詢模塊。