1. 程式人生 > >Visual Studio 水晶報表Crystal Reports

Visual Studio 水晶報表Crystal Reports

20180114 10:43:31 junxingtx 閱讀數:992更多

下載外掛地址:https://wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

外掛部落格地址

https://blog.csdn.net/xzg58753795/article/details/81943416

環境:Visual Studio 2015, C#;

部落格轉載地址:https://blog.csdn.net/zshuaihua/article/details/25786077

本文主要包含以下內容:

一、ReportViewer使用小例子的完整步驟(新建-設計-編碼-除錯-結果);

二、ReportViewer使用過程常見問題及關鍵注意點(僅為本人個人觀點);

三、參考資料;

四、心得體會;

===================================================================================================================================


 

一、ReportViewer使用小例子的演示。

1、新建專案。

新建一個Windows視窗程式專案,命名為“Demo"

2、加入ReportViewer控制元件。

1)在默認出現的Form1.cs[設計]檢視中手動調節下Form1窗體的大小,左側工具箱-->報表-->雙擊其中的”ReportViewer"

https://img-blog.csdn.net/20140514170505640?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(圖 1
 

2)切換至設計視窗,選擇ReportVierwer控制元件右上角黑色小三角,顯示“ReportViewer任務,選擇在父容器中停靠

https://img-blog.csdn.net/20140514171353968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(圖 2
 

3、新增資料集。

1)在解決方案資源管理器的本專案”Demo“上右鍵,-->新增-->

新建項...。在已安裝的模板(左側)選擇資料,在對應的右側欄中選資料集,併為其命名為”testDataSet.xsd“

https://img-blog.csdn.net/20140514171141671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(圖 3
 

2)在自動顯示的testDataSet.xsd視窗空白處右鍵,-->新增-->資料表。

https://img-blog.csdn.net/20140514171806218?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(圖 4
 

3)點選表頭為其改名為”testDataTable",並在下一行的空白處右鍵,-->新增-->列。按快捷鍵“Ctrl + L”,共建四個列,並將列名自定義修改。(及時儲存)

https://img-blog.csdn.net/20140514172010484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEasthttps://img-blog.csdn.net/20140514172052765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(圖 5
 

4、新增報表。

1)同新增資料集相似。在專案名稱上右鍵,-->新增-->新建項...已安裝模板中選擇”Reporting“,相應右側選擇報表,在下面名稱中改為”testReport.rdlc“

https://img-blog.csdn.net/20140514172606234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

(圖 6
 

2)在新檢視的主體部分(黑色方框內部為主體部分,外部為報表部分)空白處右鍵,-->插入-->表。

https://img-blog.csdn.net/20140514173012093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

( 7)
 

3)會自動彈出資料集屬性對話方塊,將名稱改為”DataSetName"(這個名稱很重要,後面程式碼中要用到,故要記清),資料來源選擇剛新建的“testDataSet",”可用資料集會自動選擇”testDataTable“,"確定

https://img-blog.csdn.net/20140514173123046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

( 8)
 

4)在testReport.rdlc[設計]檢視下,剛建的只有三列,在任一單元格上右鍵,-->插入列-->靠右。在第一行的表頭輸入這三列的表頭,在第二行的資料行,滑鼠移動每個單元格上,點選單元格右上角的圖示,選擇相應的列。

https://img-blog.csdn.net/20140514173238343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

( 9)
 

5、繫結報表。

返回”Form1.cs[設計]"檢視,如圖 2類似,這次點選選擇報表右側的下拉條,選擇我們新建的報表“demo.testReport.rdlc",全部儲存。

https://img-blog.csdn.net/20140514173537437?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

( 10)
 

6、新增程式碼。

檢視”Form1.cs“的程式碼,在Form1_Load()方法中新增程式碼。程式碼如下(以下只是Form1_Load()方法的程式碼,不是全部,新增時需要在using下多加一行)。

[csharp] view plain copy

  1. <span style="font-size:14px;">  using Microsoft.Reporting.WinForms;</span>  

[csharp] view plain copy

  1. <span style="font-size:14px;">  private void Form1_Load(object sender, EventArgs e)  
  2.         {  
  3.             loadReport();  
  4.             this.reportViewer1.RefreshReport();  
  5.         }  
  6.   
  7.         public void loadReport()  
  8.         {  
  9.             DataTable dt = new DataTable();  
  10.             //定義本地資料表的列,名稱應跟之前所建的testDataTable表中列相同。  
  11.             dt.Columns.Add("Column1"typeof(string));  
  12.             dt.Columns.Add("Column2"typeof(string));  
  13.             dt.Columns.Add("Column3"typeof(string));  
  14.             dt.Columns.Add("Column4"typeof(string));  
  15.   
  16.             //動態生成一些測試用資料  
  17.             for (int i = 0; i < 50; i++)  
  18.             {  
  19.                 DataRow row = dt.NewRow();  
  20.                 row[0] = "Test01-" + i.ToString();  
  21.                 row[1] = "Test02-" + i.ToString();  
  22.                 row[2] = "Test03-" + i.ToString();  
  23.                 row[3] = "Test04-" + i.ToString();  
  24.                 dt.Rows.Add(row);  
  25.             }  
  26.   
  27.             //設定本地報表,使程式與之前所建的testReport.rdlc報表檔案進行繫結。  
  28.             this.reportViewer1.LocalReport.ReportPath = "testReport.rdlc";  
  29.             this.reportViewer1.LocalReport.DataSources.Clear();  
  30.             this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSetName",dt));  
  31.         }</span>  

7、執行效果。

https://img-blog.csdn.net/20140514170140578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast


===================================================================================================================================

二、需要注意的幾個地方。

1、程式碼中new ReportDataSource("DataSetName",dt)),這裡的DataSetName是上面一、4、(3裡那個名字,而不是所建的資料集檔案”testDataSet.xsd"的名字。我之前因為把這裡弄錯,花了好長時間才修正。

2、按上述步驟弄完後,也許還不好出來想要的結果。可能會彈出本地報表處理期間出錯等錯誤提示。

https://img-blog.csdn.net/20140514164808109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

解決方法:將“testReport.rdlc"檔案複製一份放到提示的指定Debug目錄下。

上述方法固然可以,但每次都要手動將檔案進行復制,顯然不合適。這時其實只需要在解決方案資源管理器中點選報表檔案”testReport.rdlc",在下方的屬性一欄中,從複製到輸出目錄後面的下拉選單中選擇始終複製。這樣,便不用手動往Debug目錄複製檔案了。(也有網友將屬性中的生成操作一項的嵌入的資源改為內容。但對本例不適用,僅作說明)

https://img-blog.csdn.net/20140514165519453?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenNodWFpaHVh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

===================================================================================================================================

三、參考資料。

1、本例最初的參考:參考資料1

2、對於如何自定義報表每頁顯示多少行的參考:參考資料2

3、關於報表中分組的參考:參考資料3

4、除錯過程遇到問題解決思路的參考:參考資料4

===================================================================================================================================