水晶報表(Crystal Report)通過Visual Studio 2010的WPF實現


1,前言。

     本文中采用的工具介紹: VS2010旗艦版,CrystalReport版本為13.0 。實現的方式是做一個簡單demo,讓初學者能夠初步了解水晶報表的使用。

    本文中水晶報表采用的模式是PUSH模式實現。

  如果引用本文,請 說明是 轉自 出處!謝謝!  本文的出處為:(http://www.cnblogs.com/zlbcdn/archive/2012/03.html

2,正文

     步驟一:打開VS2010. 創建一個WPF項目,並命名。(本例是CrystalReportDemo),截圖如圖1 所示:

 圖1 

2, 建好一個項目之后,其主界面就出來了,如下面的圖2所示:

圖2


3,在解決方案資源管理器中,右鍵-->添加-->新建項。  如下圖3所示:

 

圖3


4,在新建項目中選擇數據集(DataSet),並重命名,如下圖4所示:

 

圖4

5,操作完以上的步驟:其界面就是如下所示:(圖5)

 

圖5

6,點擊左側的“服務器資源管理器”(如果沒有,可以通過:視圖-->服務器資源管理器,進行添加)。選擇“數據連接”,點擊右鍵,如圖6所示

 

圖6


7,進入界面之后,就會出現連接界面,選擇相應的數據庫連接,輸入你的用戶名和密碼。如圖7所示:

 

圖7


8,連接成功之后,就會在“服務器資管理器”中出現相應的數據庫的表,選擇相應的表,將選中的表拖拽到右側的DataSet中。如圖8所示:

 

圖8

      這樣,我們就把數據庫中的數據添加到了內存的DataSet中了。


9, 在右側的“解決方案資源管理器”,右擊-->添加-->新建項,選擇水晶報表,並重命名,點擊 添加。如下圖所示:(圖9)

 

圖9


10,隨后會出現一個界面,選擇空白的模板,點擊 確定 。如圖10所示。

 

圖10


11,這時,整個界面應該就是如下圖所示了。(圖11)

 

圖11


12,在左側的字段資源管理器(filed explorer),選擇數據庫字段,右擊,選擇“數據庫專家”。如下圖(圖12所示)

 

圖12


13,點擊數據庫專家,進入相應界面,這兒就會出現前面所做的數據庫連接。選擇相應的數據庫,


【注意】:這兒要選擇 “項目數據” 中的DataSet,假如選擇了“我的連接”中的相應表,則就是PULL模式了。 

圖13


14,在你的數據庫中選擇前幾步中 的 那個數據庫表。如圖所示:(圖14)

 

圖14


15,此時,在字段資源管理器中,就可以講所選數據庫表格的字段,拖拽到報表中,如下圖所示:(圖15)

 

圖 15


16。在MainWindow.xaml中,將右側的CrystalReportsViewer,拖拽到主界面上。如圖所示:圖16

 

圖16

【注意】: 這兒可能會出現一個錯誤:  未能找到類型或命名空間名稱“CrystalDecisions”(是否缺少 using 指令或程序集引用?)

【解決方法】:1)  要在工程的項目中,添加引用“CrystalDecisions.CrystalReports.Engine”等引用。

                    2) 在WPF的工具箱 的界面中 右擊---》選擇項。這是會出現如下的界面:(圖16-1)

  

  要在,WPF組件中 選中CrystalReportsViewer。並且在.NET FrameWork組件選項卡 中選中 CrystalReportsViewer。這樣問題就會解決。


17,在MainWindow的代碼中,編寫如下的代碼:保存后點擊,然后點擊運行。


 

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Windows;
6 using System.Windows.Controls;
7 using System.Windows.Data;
8 using System.Windows.Documents;
9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Navigation;
13 using System.Windows.Shapes;
14 using CrystalDecisions.CrystalReports.Engine; //不要忘記引用
15 using CrystalDecisions.Shared; //不要忘記引用
16 using Oracle.DataAccess.Client; //不同的數據庫,會有不同的 引用
17 using System.Data; //這個是必須的,因為DataSet等都在這個包里
18
19
20 namespace CrystalReportDemo
21 {
22 /// <summary>
23 /// MainWindow.xaml 的交互邏輯
24 /// </summary>
25 public partial class MainWindow : Window
26 {
27 public MainWindow()
28 {
29 InitializeComponent();
30 Data_Binding();
31 }
32
33 void Data_Binding()
34 {
35
36 DataSet empDataSet = new DataSet();
37
38 using (OracleConnection conn = new OracleConnection())
39 {
40 conn.ConnectionString = "User Id=tsingdemo; Password=tsingdemo; Data Source=tsing;";
41 conn.Open();
42
43
44 string sqlStr = "select * from EMP";
45 OracleDataAdapter dataAdapter = new OracleDataAdapter(sqlStr, conn);
46
47 dataAdapter.Fill(empDataSet, "emps");
48 }
49 ReportDocument reportDoc = new ReportDocument();
50 string reportDataSource = @"E:\workspace\CrystalReportDemo\CrystalReportDemo\CrystalReportOfEmps.rpt";
51
52 reportDoc.Load(reportDataSource);
53 reportDoc.SetDataSource(empDataSet);
54
55 this.crystalReportsViewer1.ViewerCore.ReportSource = reportDoc;
56 }
57
58
59 }
60 }


【注意】:這兒會出現一個錯誤:

     【錯誤一】 錯誤 6 XML 命名空間“clr-namespace:SAPBusinessObjects.WPF.Viewer;assembly=SAPBusinessObjects.WPF.Viewer”中不存在標記“CrystalReportsViewer”。

     【解決方法】:在“解決方案資源管理器”,點擊 項目 ,右擊,選擇 “屬性”,在屬性界面中 選擇“.Net FrameWork 4”。而不是.NET FrameWork 4 Client。如圖所示:

 

保存之后,再點擊運行,又會出現另一個問題:

【問題2】:未能加載文件或程序集“file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll”或它的某一個依賴項。系統找不到指定的文件。

【解決方法】:在你的app.config配置文件中。做如下的修改或配置:

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

  

18  此時就不會出現錯誤了。點擊運行,就會出現報表結果:如圖(18)所示:

 

至此,水晶報表PUSH模式,通過VS2010的WPF就展示出來了。

 

3,聲明:如果引用本文,請說明出處!謝謝!

 

 











免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM