以下先以最簡單的單檔資料報表來初步瞭解Crystal Report如何設計。

 

q  導出報表Template

設計報表之前,首先將我們設計好的Template導出來,在WindowsReport Template中我們有兩個,一個是一般的ReportView所做成,另一個為ClientQuery所做成,你們可以依照個人的經驗自行增加Template,報表TemplateEEPNetClient下的Template檔案夾下面有CReport1CReport22Project。以下為導出Template的動作:

Step1選擇功能表File->Export Temlate,打開Export Template Wizard視窗,選擇所需導出的範本,如圖,我們選擇導出【Template\CReport1】,然後按下【Next】按鈕。

6-1-1選擇所需導出的範本

 

Step2如圖,命名為CReport1,最後再按下Finsh按鈕即可。


6-1-2新範本命名

 

Step3重複上面步驟,我們再將Template\CReport2導出,並命名為CReport2

 

下文中,我們將會以這兩個Template來開發報表的範例。

 

q  Server端開發

 

Step1Solution1中,增加一個新Project(從範SSingle,命名為【sReport1】。可以從Solution ‘Solution1’EEPServer錄上面按下滑鼠右鍵,然後選擇Add->New Project..」,出現如下圖的視窗,選擇範本【SSingle】,『Location』程式路徑選擇【C:\Program Files\InfoLight\EEP2010\ MyProject】即可。

6-1-2新增ServerProject


Step1Solution Explorer視窗裏,用滑鼠雙sReport1面的【Component.cs】,打開Component.cs[Design]


6-1-3打開Component.cs[Design]

 

Step2先把InfoConnection的『ConnectionString』屬性設置成【ERPS】,然後滑鼠雙MasterMasterInfoCommandName,用戶可以自行修改其Name);或是按下CommandText屬性右邊的,就會打CommandText Editor窗。接著按一下Tables下面的【Add】按鈕,在Choose tables裏選擇『Customers』表,按一下【OK】按鈕。


6-1-4選定Customers資料表

 

Step3接著在Tables選中『Customers』表,然後按一下【Add *】按鈕,最後按下【OK】按鈕。

6-1-5設定Command語法

 

Step4Solution Explorer視窗裏sReport1上面按滑鼠右鍵,按一下Build,編譯SReport1,產生sReport1.dll檔。執行桌面上的EEPNetServer.exe

 

Step5然後打開File->Package Manager,在Packages中選中Solution1,然後按一下Add,選擇\InfoLight\EEP2010\EEPNetServer\Solution1下面的sReport1.dll按一下開啟(O)按鈕,最後按一下Package Manager中的Save按鈕。然後關閉Package Manager

 

6-1-6載入sReport1.dll

 

 

q  Client端開發

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



6-1-6新增ClientProject

 

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

6-1-7開啟Form1.cs[Design]

 

Step3按一下MasterMasterInfoDataSet資料表)的RemoteName屬性右邊的打開RemoteName視窗。

6-1-8開啟RemoteName視窗

 

Step4然後在DataModule選中前面做好的sReport1,在DBCommand裏選擇MasterMasterServerSReport1裏面的InfoCommand的名字),按一下OK按鈕。再把MasterInfoDataSetActive屬性設為True

這個案例中我們是要直接將所有資料印出來,所以將AlwaysClose屬性設置成False,但大部份情況下是必須讓User先輸入條件後再印表的,因此大都是為True,另一個PacketRecords的屬性則必須設為-1,代表全部一次下載,否則資料會只有PackedRecords的設定值這麼多。

6-1-9設置各屬性

 

Step5MasterInfoDataSe)處按下滑鼠右鍵,選取右鍵功能表的Save To Report,產生sReport1_Master.xml檔案在安裝目錄的EEPNetReport資料夾下(MasterServersReport1裏面的InfoCommand的名字)

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


6-1-10存檔

 

Step6回到Form1設計畫面中,用滑鼠按一下CrystalReport Viewer1右上角的(快捷鈕),再按下Create a New Crystal Report,然後輸入報表名稱CustomerReport,再按下OK


6-1-11新增一個Crystal Report

Step7稍等2秒,會出現如下的畫面,選擇From an Existing Report,按下OK

6-1-12選擇From an Existing Report

 

Step8選擇EEP2010安裝目錄下EEPNetReport目錄裏面的RSingle.rpt檔案,最後按下開啟(O)

 
6-1-13開啟RSingle.rpt檔案

Step9滑鼠按兩下CustomerReport.rpt打開CrystalReport設計器。

6-1-14打開CrystalReport設計器

 

Step10用滑鼠左鍵按一下CrystalReport設計器最右面的Field Explorer頁籤,然後在Database Fields上按滑鼠右鍵,在右鍵功能表中選擇Database Expert按下滑鼠左鍵。(如果找不到Field Explorer可以在Report的滑鼠右鍵功能表中找到。)


 
6-1-15打開Database Expert視窗

 

Step11按一下Create New Connection前的加號展開檔案夾,然後再按一下ADO.NET前的+號,會彈ADO.NET然後選擇Infolight/EEP2008/EEPNetReport/sReport1_Master.xml檔案(這個檔案就是來自InfoDataSetSave To Report功能所產生)。按一下開啟(O)最後在ADO.NET視窗中按下完成


6-1-16開啟sReport1_Master.xml檔案

Step12Available Data Source子裏選中Master,然後按一下按鈕,Master增加到Selected tables格子裏面,按一下確定按鈕。

6-1-17添加Master資料表

Step13Field Explorer先按一下Database Fields前的+號,再按一下Master前的+號。最後在展開Master中選中所需的欄位按下滑鼠左鍵不放,把所需要的欄位元拖到CrystalReport設計器Details(明細區域)中。


6-1-18欄位元拖到Details

Step14滑鼠點兩報表表頭這個TextObjectText改成客戶資料表

 


6-1-19更改報表表頭

Step15Form1的設計畫滑鼠連按兩下Print按鍵就會開button1_Click事件程式碼

6-1-20button1_Click事件

button1_Click事件中已經有以下兩行程式

            string Wstr = "1=0";

            Master.SetWhere(Wstr);

其中string Wstr=”1=0”;這行程式本來用來自行設定資料表的條件所使用,注意如果有User條件輸入,就可以在這個程式中加入WstrWhere語句,此時InfoDataSetAlwaysClose屬性就必須設為True。現在因為我們沒有條件,要全部印出,因此將此兩行程式用「//」註釋掉。

F 然後我們要自己輸入以下兩行程式:

            CustomerReport1.SetDataSource(Master.RealDataSet);

            crystalReportViewer1.ReportSource = CustomerReport1;

F 完成之後就如同下圖:


6-1-21啟動button1_Click事件

Step16如果想要在按Print按鈕之前,沒有Crystal Report 的空白表頭,就請回到Form1設計畫面中,用滑鼠按一下CrystalReportViewer1上角的,再按下Clear Report Source

6-1-22 Clear Report Source的設置

Step17右鍵CSingleReport1按一下Build,編譯CSingle Report1產生cSingleReport1.dll。然後執行桌面捷徑EEPNetServer.exe,接著執行桌面捷徑EEPManager.exe

6-1-23編譯CSingle Report1EEPManager

 

Step18選擇System->Security Manager,打開Security視窗。然後選ROOT,按一下Add按鈕,增加一個功能表,按照下圖設置Menu Information(其中Package是選擇EEP安裝目錄InfoLight\EEP2010\EEPNetClient\Solution1下的cSingleReport1.dll檔),最後按一下OK按鈕。

6-1-24設置各Menu Information

 

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

6-1-25添加EveryOne

 

Step20執行桌面捷徑EEPNetClient.exe,然後雙cSingleReport1,按下Print按鈕查看執行結果。至此,一個簡單的報表設計就完成了。

6-1-26報表完成

如果希望一打開就能有資料,不必再Print才有資料時,只要將此ButtonOnClick程式移到CSingleReport1表單的Load事件中即可,如下:

private void Form1_Load(object sender, EventArgs e)

{

   CustomerReport1.SetDataSource(Master.RealDataSet);

          crystalReportViewer1.ReportSource = CustomerReport1;

    }

 

 

 


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