往下我們要配合使用ClientQuery來讓User輸入條件後,再輸出到報表中。Server端與之前的一樣,因此只在這裏介紹Client的設計步驟。

 

q  Client

 

Step1Solution1中,增加一個新Project(從範本CReport2),命名為cSingleReport2。可以從Solution‘Solution1’EEPClient目錄上面按下滑鼠右鍵,然後選擇Add->New Project出現如圖的視窗選擇範本CReport2Location程式路徑選擇C:\Program Files\InfoLight\EEP2010\MyProject即可。(即ServerClient的程式都放在同一個目錄之下)。

6-2-1新增ClientProject

 

Step2用滑鼠雙按cSingleReport2下面的Form1.cs,打開Form1.cs [Design]

6-2-2打開Form1.cs [Design]

 

Step3按一MasterMasterInfoDataSet資料表)的RemoteName屬性右邊的

6-2-3打開RemoteName視窗

 

Step4打開RemoteName視窗。然後在DataModule中剛才sReport1,在DBCommand選擇MasterMasterServerSReport1裏面的InfoCommand的名字),按一下OK按鈕。

6-2-4選定值

 

Step5MasterInfoDataSet元件)Active屬性和AlwaysClose屬性設置成True。此因本查詢表需要事先由User來輸入資料給ClientQuery來執行Where條件,因此打開Report的同時,將 AlwaysClose 設為True,代表不會啟動此InfoDataSet另一個PackedRecords的屬性則必須設為-1,代表全部一次下載,否則資料會只有PackedRecords這麼多。

6-2-5設定Master各屬性

Step6Master InfoDataSe)按下滑鼠右鍵,選取右鍵功能表的Save To Report,產sReport1_Master.xml案。(MasterServersReport1裏面的InfoCommand的名字)。

此目的是為了在RPT報表格式(Crystal Report File)的設計模式中取得我們InfoDataSet的資料結構。

6-2-6 執行Save To Report

 

Step7回到主設計畫面中,ibsMaster(此為InfoBindingSource資料表,Template已經讓其DataSource對應到MasterDataSet了,而DataMember屬性設置為Master,就是指對應Master這個Table上。

6-2-7 設置DataMember屬性

 

Step8用滑鼠左鍵按一clientQuery1Columns性右面的,打開QueryColumns Collection Editor視窗


6-2-8 打開QueryColumns Collection Editor視窗

 

Step9ToolBoxInfoRefVal,到Form1的下方設定InfoRefVal1的屬性如下:


6-2-9 設定InfoRefVal1的屬性

 

Step10QueryColumns Collection Editor視窗中按一下Add按鈕,增加2Member(成員)。2Member的具體設置如下圖所示,分別為從客戶編號到客戶編號兩個欄位做為查詢條件等。設置完後按OK按鈕結束設置。


6-2-10 增加2Member

 

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

6-2-11 打開Choose a Crystal Report視窗

 

Step12我們可以選擇上一個範例做好的CustomerReport.rpt檔案,選擇瀏覽,找到C:\ProgramFiles\InfoLight\EEP2010\MyProject \cSingleReport1\CustomerReport.rpt這個檔案,然後把Add to project前面的也打上(代表會自動加入到目前的Project中,最後按OK按鈕結束。

6-2-12/1 選擇CustomerReport.rpt檔案

6-2-12/2 CustomerReport.rpt加入Project

 

Step13Query的按鍵上連點兩下滑鼠左鍵,就會進入到button1_Click事件。

6-2-13 進入button1_Click事件

 

F button1_Click事件中輸入以下三行程式:

clientQuery1.Execute(splitContainer1.Panel1);

CustomerReport1.SetDataSource(Master.RealDataSet);

crystalReportViewer1.ReportSource = CustomerReport1;

 

代表在此Button按下去時,會去執行ClientQueryExecute()函數,來取得Panel1內的條件並組合SQLWhere語句給ClientQuery所指定的BindingSource,即可讓此BindingSourceUser的條件來反應內容。最後再將Master這個InfoDataSet內的RealDataSet內容指定給CustomerReport1這個報表作為資料的源頭。如下圖


6-2-14 定義button1_Click事件

 

Step14右鍵cSingleReport2按一下Build,編譯CSingleReport2產生CSingleReport2.dll,然後執行EEPNetServer.exe,接著執行EEPManager.exe

EEPManager.exe設定步驟,我們不再贅述與貼圖,簡單說明操作方式即可。

 

Step15選擇System->Security Manager,打開Security視窗。然後選中ROOT,按一下Add按鈕,增加一個功能表。Menu Information裏面MenuId會自動編號Caption設置為CSingleReport2Sequence設置為1(其中Package是選擇EEP安裝目錄InfoLight\EEP2010\EEPNetClient\Solution1下的cSingleReport2.dll檔),最後按一下OK按鈕。

Step16cSingleReport2,按一下Access Groups,在出frmSelGroups視窗中先選中EveryOne,然後按一下按鈕,接著按一下OK按鈕,最後關閉Security視窗。

Step17執行程式EEPNetClient.exe,然後雙按cSingleReport2能表,輸入查詢條件,最後按下Query按鈕查看執行結果。(按Clear按鈕可以清除查詢結果和輸入的查詢條件)。至此,一個使用ClinetQuery與簡單的報表結合設計就完成了。

6-2-15 ClientQuery報表完成

 

 

 

 

 


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