以下的例子將說明最常用的統計報表實例,來說明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) |