以下的例子將說明最常用的統計報表實例,來說明Crystal Report與EEP2010間的整合關係。

 

q  Server端

 

Step1>在Solution1中,增加一個新Project(從範本SSingle),命名為【sReport2】。

圖 6-5-1 新增Server端Project

 

Step2>在Solution Explorer裏用滑鼠雙按sReport2下面的Component.cs,打開Component.cs[Design]。

圖 6-5-2打開Component.cs[Design]

 

Step3>先把InfoConnection的『ConnectionString』屬性設置成【ERPS】。然後按一下Master(Master是一個InfoCommand的Name,用戶可以自行修改其Name)的CommandText屬性右邊的,打開CommandText Editor視窗。接著按一下Tables下面的【Add】按鈕,在Choose tables裏選擇OrderDetails表,按一下【OK】按鈕。接著在Tables裏選中『Order Details』表,然後按一下【Add *】按鈕,最後按下【OK】按鈕。完成圖如下:

圖 6-5-3設置ERPS


圖 6-5-4 添加OrderDetails

 

Step4>再次按一下Tables下面的【Add】按鈕,在Choose tables裏選擇『Orders』表,然後按一下【OK】按鈕。

圖 6-5-5 添加Order資料表

 

Step5>接著在「Tables」頁籤裏選中Orders表,在Columns裏選擇『OrderDate』,然後按一下【Add】按鈕,跳出Join Option視窗,系統會預設好[Order Details].[OrderID] = [Orders].[OrderID]的設定,同時選擇默認的LeftJoin模式,最後按下【OK】按鈕。

圖 6-5-6 設定Join語法

 

Step6>按一下Tables下面的【Add】按鈕,在Choose tables裏選擇『Customers』表,然後按一下【OK】按鈕。

圖 6-5-7 添加Customers表

 

Step7>接著在Tables裏選中Customers表,在Columns裏選擇『CompanyName』,然後按一下【Add】按鈕:

圖 6-5-8 添加CompanyName表


Step8>跳出Join Option視窗,在「Left」這邊選 【[Orders].[CustomerID]】,在「Right」這邊選【[Customers].[CustomerID]】,然後按下【OK】按鈕。

圖 6-5-9 設定Join的資料表

Step9>回到CommandText Editor視窗,接著在Columns裏面選擇『CustomerID』,然後按下【Add】按鈕。

圖 6-5-10 添加CustomerID表

 

Step10>把Command Text裏面的[Orders].[OrderID]刪掉,最後加上Order By [Customers].[CustomerID],按下【OK】按鈕結束設定。也可在Command Text中直接輸入如下語法,這樣可省去Step3~Step10的步驟。

select [Order Details].OrderID,[Order Details].ProductID,[Order Details].UnitPrice,[Order Details].Quantity,[Order Details].Discount,Orders.OrderDate,Customers.CompanyName,Customers.CustomerID from [Order Details] left join Orders on [Order Details].OrderID=Orders.OrderID left join Customers on Orders.CustomerID=Customers.CustomerID Order by Customers.CustomerID


圖 6-5-11 修改Command

 

Step11>在Solution Explorer裏用滑鼠右鍵sReport2,按一下【Build】編譯sReport2,產生sReport2.dll檔,執行「EEPNetServer.exe」。

 

Step12>然後打開File->「Pakeage Manager」,在Packages中選中『Solution1』,然後按一下【Add..】,選擇\InfoLight\ EEP2010\EEPNetServer\Solution1下面的sReport2.dll,按一下打開【開啟(0)】按鈕,最後按一下Package Manager中的【Save】按鈕。然後關閉Package Manager。

 

 

q  Client端

 

Step1>在Solution1中,增加一個新Project(從範本CReport2),命名為【CRGroup】。

圖 6-5-12 新增Client端Project

 

Step2>用滑鼠按兩下CRGroup下面的Form1.cs,打開Form1.cs[Design]。

圖 6-5-13打開Form1.cs[Design]

 

Step3>按一下Master(Master為InfoDataSet資料表)的RemoteName屬性右邊的,打開PERemoteName視窗。然後在DataModule選中剛才『sReport2』,在DBCommand裏選擇『Master』(Master為Server端sReport2裏面的InfoCommand的名字),按一下【OK】按鈕。

 


圖 6-5-14選中設定

 

Step4>把Master這個InfoDataSet的『Active』屬性和『AlwaysClose』屬性設置成【True】。另一個『PackedRecords』的屬性則必須設為【-1】,代表全部一次下載。


圖 6-5-15設定Master屬性

 

Step5>接下來右鍵Master(為InfoDataSet)的「Save To Report」,產生sReport2_Master.xml檔案。


圖 6-5-16 執行Save To Report

 

Step6>把ibsMaster(此為InfoBindingSource資料表)的『DataMember』屬性設置為【Master】。

圖 6-5-17 設定DataMember

Step7>用滑鼠左鍵按一下clientQuery1的Columns屬性右面的,打開QueryColumns Collection Editor視窗。

圖 6-5-18打開QueryColumns Collection Editor視窗

 

Step8>在QueryColumns Collection Editor視窗中按一下【Add】按鈕,增加2個Member,2個Member的具體設置如下圖所示,分別設定【從訂單日期】與【到訂單日期】,其中『ColumnType』設置為【ClientQueryCalendarColumn】,代表要以日曆元件做為輸入的選單,並設定條件為【>=】與【<=】,設置完後按【OK】按鈕。

圖 6-5-19增加2個Member並設定參數

 

Step9>用滑鼠左鍵按一下CrystalReportViewer1右上角的,打開功能選單,在裏面選擇「Choose a Crystal Report…」,打開Choose a Crystal Report視窗。


圖 6-5-20打開Choose a Crystal Report視窗

 

Step10>選擇EEP2010安裝目錄下EEPNetReport目錄裏面的RGroup.rpt檔案,然後把「Add to project」前面的也打上,最後按【OK】按鈕結束。


圖 6-5-20打開RGroup.rpt檔案

 

Step11>用滑鼠左鍵按一下CrystalReportViewer1右上角的,打開功能選單,把「Choose a Tool Panel View」選為GroupTree。

圖 6-5-21選中Display Group Tree

 

Step12>在Form1的設計畫面滑鼠連按兩下「Query」按鈕,在button1_Click事件中輸入以下三行程式。

            clientQuery.Excute(Panel1);

            RGroup1.SetDataSource(Master.RealDataSet);

            crystalReportViewer1.ReportSource = RGroup1;

完成圖如下:

    

圖 6-5-22 編輯button1_Click事件

 

Step13>雙按RGroup.rpt,打開CrystalReport設計器。


圖 6-5-23打開CrystalReport設計器

 

Step14>用滑鼠左鍵按一下CrystalReport設計器最右面的「Field Explorer」,然後右鍵Database Fields打開Database Expert…。

圖 6-5-24打開Database Expert

 

Step15>按一下Create New Connection前的“+”號展開檔案夾,然後再按一下ADO.NET前的“+”號,會彈出ADO.NET視窗,然後選擇Infolight\EEP2010\EEPNetReport\下的SReport2_Master.xml檔案,按一下【開啟(O)】按鈕。最後在ADO.NET視窗中按一下【完成】按鈕。

圖 6-5-25開啓SReport2_Master.xml檔案

 

Step16>在Available Data Source裏選中Master,然後按一下 按鈕,把『Master』增加到Selected tables裏面,按一下【確定】按鈕。


圖 6-5-26添加Master

 

Step17>在Crystal Report的設計頁面中有一個GroupHeader Section1這個區域,請在滑鼠右鍵功能表先選Report再往右選「Group Expert」,來打開Group Expert視窗。


圖 6-5-27打開Group Expert視窗

Step18>在Group Expert視窗的Group By裏面,右鍵Group#1-A選擇「Options…」,打開Change Group Options視窗。


圖 6-5-28打開Change Group Options視窗

 

Step19>在Change Group Options視窗選擇『CustomerID』欄位,然後按下【確定】按鈕,代表要以CustomerID做為群組的依據欄位。


圖 6-5-29選擇CustomerID欄位

Step20>滑鼠在Field Explorer裏的Formula Fields按一下,再右鍵「New…」,打開Formula Name視窗增加一個公式欄位。

圖 6-5-30增加公式欄位

 

Step21>在Name: 裏輸入 “TotalAmount”,然後按一下 Use Editor 按鈕,打開Formula Workshop – Formula Editor視窗。


圖 6-5-31打開Formula Workshop – Formula Editor視窗

 

Step22>在FormulaWorkshop–FormulaEditor視窗的中輸入{Detail.UnitPrice}*{Detail.Quantity},這2個欄位也可以從「New DataSet」中拖入到編輯器裏。最後按下【Save and close】。

圖 6-5-32 定義Command

Step23>在Field Explorer先按一下Database Fields前的“+”號,再按一下Master前的“+”號。最後在展開的Master中選中所需的欄位按下滑鼠左鍵不放,把所需要的欄位拖到CrystalReport設計器的Details區域中。把『CustomerID』與『CompanyName』拖到GroupHeaderSection1裏面,代表要在群組表頭中列印CustomerID與CompanyName。最後把新建的公式欄位拖入到報表的Details區域中。

 


圖 6-5-33 公式欄位拖至Details區域

 

Step24>右鍵Field Explorer裏的「Running Total Fields」,再右鍵「New…」。


圖 6-5-34 新建

 

Step25>打開Create Running Total Field視窗,增加一個匯總欄位。

Œ    在『Running Total Name:』裏輸入【Total】;

   然後在『Available Tables and Fields:』裏面選中【TotalAmount】欄位,也就是剛才所創建的公式欄位。

Ž   接著按下Field to summarize左面的按鈕,這樣就在Field to summarize裏新增了一個【@TotalAmount】的變數;

   緊接著在『Type of summary』裏選擇【sum】;

   最後在『Reset』裡選擇【On change of group】,目的是爲了讓加總欄位按照每一個CustomerID的明細數據進行加總,按下【OK】結束設定。


圖 6-5-35增加匯總欄位

 

Step26>最後把新建的匯總欄位拖入到報表的GroupFooterSection1區域中。並增加一個Text Object,雙按Text Object,輸入“總計:”。


圖 6-5-36增加一個Text Object

 

Step27>雙按報表表頭這個TextObject,把名字改成“訂單產品統計表”。


圖 6-5-37修改表頭

 

Step27>右鍵CRGroup,按一下【Build】編譯CRGroup,產生CRGroup.dll,然後執行「EEPNetServer.exe」,接著執行「EEPManager.exe」。

 

Step28>選擇System->「Security Manager」,打開Security視窗。然後選中ROOT,按一下【Add】按鈕,增加一個功能表,將『Caption』設置為【CRGroup】,『Sequence』設置為【4】(其中Package是選擇EEP安裝目錄InfoLight\EEP2010\EEPNetClient\Solution1下的CRGroup.dll檔),最後按一下【OK】按鈕。選中CRGroup,按一下【Access Groups】,選中『EveryOne』,然後按一下按鈕,接著按一下【OK】按鈕,最後關閉Security視窗。

 

Step29>執行「EEPNetClient.exe」,然後雙按“CRGroup”功能表,然後輸入要查詢的日期,最後按下「Query」按鈕查看執行結果。



圖 6-5-38統計報表完成

 

===============EEP2010報表設計 完==============

 

Converted from CHM to HTML with chm2web Pro 2.85 (unicode)