犀利的報表系統,發票據與報表開發的快速利器,AgileEAS.NET SOA中間件GReport使用指南


一、前言

     AgileEAS.NET SOA 中間件平台是一款基於基於敏捷並行開發思想和Microsoft .Net構件(組件)開發技術而構建的一個快速開發應用平台。用於幫助中小型軟件企業建立一條適合市場快速變化的開發團隊,以達到節省開發成本、縮短開發時間,快速適應市場變化的目的。

     AgileEAS.NET SOA中間件平台提供了敏捷快速開發軟件工程的最佳實踐,通過提供大量的基礎支撐功能如IOC、ORM、SOA、分布式體系及敏捷並發開發方法所支撐的插件開發體系,以及提供了大量的實體、數據模型設計生成工具、代碼生成工具,用於幫助中小軟件開發商快速成長。

     AgileEAS.NET平台充分把握目前軟件行業快速發展的新趨勢,基於敏捷並行開發、快速適應市場這樣淳朴的軟件工程實踐,采用業界廣泛使用的Microsoft .Net構件(組件)開發技術實踐了這種開發思想,幫助軟件企業實現“敏捷變化、快速適合”的目標,從而幫助軟件企業在激烈的市場競爭中贏得先機並獲得更高的回報。

二、關於GReport、Grid++報表系統

     AgileEAS.NET SOA中間件平台目前集成兩套優秀的報表系統,一套是開源的fyireporting報表系統3.96版本,其始於2007年AgileEAS.NET SOA中間件平台3.0版本之時就集成入平台的一套報表系統,其快速方便的條帶式報表非常適合用於MIS系統的報表展示,我們在fyireporting基礎上做了大是的漢化、改動並且與AgileEAS.NET SOA中間件平台進行緊密的集成。

     但是對於市場在國內的大多數軟件企業都會遇到客戶的很多近似於變態的報表需求,fyireporting有也其不足的地方,其在處理中國式的票據、和一個特殊報表時無能無為,之后我們考慮集成一套更好的中國式報表系統,在和幾家行業醫療供應商合作的兩個年頭之中,我們集成廣州銳浪的Grid++報表系統並與AgileEAS.NET SOA中間件進行融合,稱之為GReport。

     AgileEAS.NET SOA中間件平台的報表管理體系並設計為集中式的報表管理、設計與報表瀏覽、打印相協調的可集中管理的報表體系,極大的簡化和方便報表的開發、部署和管理。

     在AgileEAS.NET中間件平台之中提供了一個用於管理、和設計GRport的功能模塊“GR報表”:

@RP2A}5YU~LW~2[~EKH}ZG3

     系統之中的所有報表都是可管理的,當在系統的任何一個客戶端修改了報表定義之后,不需要重新部署程序,即可讓報表的修改通過所有的使用者。即時生效。

     在GR報表模塊之中,直接雙擊選中的報表即可進行報表設計界面,進行報表的設計:

image

     GR報表的設計器界面是基於Grid++報表所提供的設計器控件實現的,其使用方法同Grid++原始的報表設計工作,具體的使用方法請參考Grid++官方幫助。

     本設計器與官方的原生設計器之間的差別主要是新建報表與原生不同,原生的報表系統只能基於數據庫連接和SQL語句創建報表,而本設計器提供了除通過書寫SQL創建報表(不用提供連接信息,以當前連接為准)之外還提供了基於AgileEAS.NET SOA中間件平台的ORM實體創建報表:

F(E7P){_[NF(6WTTD@B)1PG

 

     數據報表即為基於SQL語句創建報表,對象報表基於ORM實體對象創建報表:

8NUSVAY(29PZU~AAKOJ@146

     當基於實體創建報表時確定報表對應的實體對象之后,系統會自動的從ORM定義信息之中讀出實體的屬性定義信息並且自動的轉換為報表的數據列。

三、GReport組件

     AgileEAS.NET SOA中間件平台為開發人員提供了三個有關於GReport報表的控件,包括打印預覽對話框、報表數據顯示控件、報表打印控件,這三個控件都由EAS.GReport.Controls.dll程序集承載,使用這三個組件之前都需要先引用EAS.GReport.Controls.dll程序集或者把這三個組件加載到Visual Studio的工具箱之中。

     打印預覽對話框: EAS.GReport.Controls.PrintViewDialog,用於打開一個新的窗口並且預覽打印報表。

~5RFB__%JI4I4FXJ$1REV}K

     報表查詢顯示控件: EAS.GReport.Controls.GDisplayViewer,以查詢模式顯示報表及報表數據的一個控件。

image

     報表預覽顯示控件: EAS.GReport.Controls.GPrintViewer,以打印模式顯示報表及報表數據的一個控件。

     以上三個控件都提供相同的報表API:

   1: //
   2: // 摘要:
   3: //     報表ID。
   4: [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
   5: [Browsable(false)]
   6: public Guid ReportID { get; set; }

     屬性ReportID:其意思為報表ID,其取值為GR報表模塊之中設計好的報表ID號,用於實現與系統報表管理的綁定。

   1: //
   2: // 摘要:
   3: //     數據源對象。
   4: [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
   5: [Browsable(false)]
   6: public object DataObject { get; set; }

     屬性DataObject:其意義為報表的數據對象,即控件要顯示或者打印的數據源,DataObject的值必須為DataTable或者為ORM實體的List<T>集合。

     程序之中調用報表的流程即為設計這兩個屬性即可,首先設計ReportID為要顯示、打印的報表ID,然后向控件設置報表的顯示數據源DataObject即可完成對報表系統的調用。

四、報表開發實例

     我們下面以DrugShop案例之中的葯品字典模塊的字打印實例如何進行GReport報表開發:

     首先我們需要在GR報表模塊之中增加一個名稱為“葯品字典明細報表”的報表項目。

QNQE3EJ3D1G%ER%V3R%S)V8

     報表名稱必須要填寫並且不能重名,別名可以選擇填寫,緩存間隔默認為15分種,最小1分種,自由設定,原則上在系統開發測試階段設小一些,在穩定運行階段設大一些。

     其他參數,如“報表模塊,把報表做為獨立模塊發布”、查詢語句、查詢參數可以不去理會,這些參數為動態報表提供,關於動態報表我們會在后面的文章之中進行專門的介紹。

     然后我們點“確定”按鈕保存報表進行下一步的報表設計工作。

     雙擊我們剛才添加的“葯品字典明細報表”進入報表設計界面,我們可以看到這是一個空報表:

88I12(%}$S{N$KB{D8M(DGE

     選擇“文件”菜單之中的“新建”=》“對象報表”:

VI52_]YB485Y]6UBRV~O5Y8

 

     切換到數據定義Tab頁,進行實體類型的選擇:

F`GRI(N4Y(DAQYAGLQL(FJE

     我們瀏覽選擇程序集DrugShop.Entitties.dll,然后在對象下拉列表框中選擇DrugShop.Entitties.PIn,即葯品入庫ORM對象,我們基於DrugShop.Entitties.PIn創建報表,點擊“確定”完成報表的新建。

image

     系統會自動的更具新建導向生成一個初始報表,如果需要對報表的顯示、格式進行調用,請參考Grid++設計手冊進行學習。

     修改完成之后,點擊“保存”圖標、或者“文件=》保存”菜單項保存報表的格式定義,這樣就完成了報表的定義。

     接下來我們需要把剛才定義、設計好的報表掛在程序之中,使用Visual Studio 打開DrugShop解決方案,打開DrugShop.WinUI項目之中的葯品字典模塊DrugDictList.cs:

image

     雙擊“打印”按鈕寫以下打印代碼:

   1: private void tsbPrint_Click(object sender, EventArgs e)
   2: {
   3:     if (this.dictList != null)
   4:     {
   5:         EAS.GReport.Controls.PrintViewDialog ViewDialog = new EAS.GReport.Controls.PrintViewDialog();
   6:         ViewDialog.ReportID = new Guid("F29C4C91-0791-4116-BE26-3A2A88F30A2A");
   7:         ViewDialog.DataObject = this.dictList;
   8:         ViewDialog.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
   9:         ViewDialog.WindowState = System.Windows.Forms.FormWindowState.Maximized;
  10:         ViewDialog.ShowDialog();
  11:     }
  12: }

     這樣我們就完成了對報表的調用,另外,在DrugShop案例之中,葯品入庫查詢和葯品銷售查詢兩個模塊之中分別使用了GReport報表,請大家在開發過程之中參考。

五、執行驗證

     我們編譯並且啟動DrugShop.Main.exe,使用0001密碼sa登錄,打開葯品字典功能,來試一下是報表是否正常:

image

     OK,使用正常,沒有任何問題。

     DrugShop案例之中同步提供了本例子的報表定義和使用代碼,請大家通過AgileEAS.NET SOA中間件官方網站最新下載欄目進行下載。

六、聯系我們

     為完善、改進和推廣AgileEAS.NET而成立了敏捷軟件工程實驗室,是一家研究、推廣和發展新技術,並致力於提供具有自主知識產權的業務基礎平台軟件,以及基於業務基礎平台開發的管理軟件的專業軟件提供商。主要業務是為客戶提供軟件企業研發管理解決方案、企業管理軟件開發,以及相關的技術支持,管理及技術咨詢與培訓業務。

     AgileEAS.NET SOA中間件平台自2004年秋呱呱落地一來,我就一直在逐步完善和改進,也被應用於保險、醫療、電子商務、房地產、鐵路、教育等多個應用,但一直都是以我個人在推廣,2010年因為我辭職休息,我就想到把AgileEAS.NET推向市場,讓更多的人使用。

     我的技術團隊成員都是合作多年的老朋友,因為這個平台是免費的,所以也沒有什么收入,都是由程序員的那種理想與信念堅持,在此我感謝一起奮斗的朋友。

團隊網站:http://www.agilelab.cn

AgileEAS.NET網站:http://www.agileeas.net

官方博客:http://eastjade.cnblogs.com

github:https://github.com/agilelab/eas

QQ:47920381

QQ群:113723486(AgileEAS SOA 平台)/上限1000人

199463175(AgileEAS SOA 交流)/上限1000人

212867943(AgileEAS.NET研究)/上限500人

147168308(AgileEAS.NET應用)/上限500人

172060626(深度AgileEAS.NET平台)/上限500人

116773358(AgileEAS.NET 平台)/上限500人

125643764(AgileEAS.NET探討)/上限500人

193486983(AgileEAS.NET 平台)/上限500人

郵件:james@agilelab.cn,mail.james@qq.com,

電話:18629261335。


免責聲明!

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



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