報表學習總結(一)——ASP.NET 水晶報表(Crystal Reports)的簡單使用


一、水晶報表簡介

Crystal Reports(水晶報表)是一款商務智能(BI)軟件,主要用於設計及產生報表。水晶報表是業內最專業、功能最強的報表系統,它除了強大的報表功能外。最大的優勢是實現了與絕大多數流行開發工具的集成和接口。在VS.Net平台做過報表開發的程序員,一定都對水晶報表強大、高效、集成等特性留下了深刻印象。 除了開發新程序外,在工作中我們常需要接觸到很多較早的軟件系統報表功能升級的需求,如果能結合水晶報表這一強大的工具,往往能事半功倍。

二、水晶報表的實現模式

在講解水晶報表實現模式之前,首先講解一下我的電腦使用配置環境:

  Visual Studio 2013與SQL Server 2012

因為VS2013沒有自帶創建水晶報表的功能,所以需要到網上下載並安裝一個插件,才能使用VS2013創建水晶報表。

插件下載地址:http://www.aspsnippets.com/Articles/Download-Crystal-Reports-for-Visual-Studio-2013.aspx

插件安裝成功后打開VS2013,會發現工具箱里多了這些東西,那么說明你的VS2013已經安裝了水晶報表的插件,現在可以通過VS2013創建水晶報表了。

2.1、拉(PULL)模式

概念介紹:拉模式是由水晶模板(引擎)直接連接數據庫(源),從數據庫(源)里拉取數據。

2.1.1、不敲一句代碼創建水晶報表拉模式

1、首先在創建水晶報表拉模式之前我們需要准備數據庫數據:

use master
go
create database Demo
go
use Demo
go
create table Dept
(
  ID int primary key identity(1,1),
  DeptID nvarchar(10),
  DeptName nvarchar(10)
)
go
create table UserInfo
(
  ID int primary key identity(1,1),
  UserName nvarchar(10),
  Salary decimal(10,2),
  Gender bit,
  DeptID int foreign key references Dept(ID)
)
go
insert into Dept values('HR','人事部')
insert into Dept values('DT','開發部')
go
insert into UserInfo values('程序猿1',2500,1,2)
insert into UserInfo values('程序猿2',3500,0,2)
insert into UserInfo values('程序猿3',5500,0,1)
insert into UserInfo values('程序猿4',6500,1,1)
insert into UserInfo values('程序猿5',10500,1,2)
go

2、然后,打開VS2013創建一個空網站項目。

3、接着在該項目下右鍵添加一個Reports文件夾,用來管理水晶報表。

4、接着 在文件夾下右鍵選擇添加"新建項目",找到"CrystalReports",輸入報表名稱。

5、點擊添加按鈕后,會彈出默認的水晶報表向導對話框,我們按向導默認選項。

6、確定后,打開“標准報表創建向導”界面。

7、連接數據庫成功后,會在簡歷連接那里出現你的連接信息,然后選擇你要顯示的表。 

8、這里選擇你要顯示的表字段。

9、點擊下一步后后面彈出的選項可以不用選擇,因為暫時還用不着,所以后面一直點擊下一步到完成會出現以下界面。

10、看到上面這個界面,說明你已經創建了一個水晶報表模板,因為是直接連接數據庫的,所以我們可以能立即看到實際的效果,點擊最下面的主報表預覽,即可顯示數據庫的表數據。

至此,我們沒有敲過任何代碼,拉模式報表創建完成。

2.1.2、在Web中使用水晶報表拉模式

在之前創建的項目中,添加一個Web窗體,命名為CrystalReport_Pull.aspx。

然后打開設計頁面,找到工具箱中的報表設計,雙擊或單擊拖入到Web窗體中,如下圖所示。

方式一:不敲代碼通過設計器綁定數據源,顯示數據。

點擊確定后,你會看到Web窗體如下界面。

點擊源,可以看到如下界面,設計器會自動生成以下代碼。

 最后我們運行VS2013在瀏覽器中查看效果,發現什么都沒有顯示,然后打開瀏覽器調試工具發現,報了以下錯誤。

解決此問題參考網站:http://stackoverflow.com/questions/31721443/crystal-report-with-visual-studio-2013-aspnet-client-system-web-4-6-81

此問題解決辦法如下:找到C:\inetpub\wwwroot此目錄下的文件夾,然后拷貝到你的項目的根目錄下。

重新編譯,再運行瀏覽查看,如下圖,可以看到數據可以正常顯示。

方式二:通過后台編寫代碼,連接數據庫綁定數據源,顯示數據。

 重新添加一個Web窗體,創建步驟與上面一致。然后右鍵點擊查看源代碼,添加如下代碼即可實現水晶報表拉模式。

 1 using CrystalDecisions.CrystalReports.Engine;
 2 using CrystalDecisions.Shared;
 3 using System;
 4 using System.Collections.Generic;
 5 using System.Linq;
 6 using System.Web;
 7 using System.Web.UI;
 8 using System.Web.UI.WebControls;
 9 
10 namespace ch02
11 {
12     public partial class CrystalReport_Pull : System.Web.UI.Page
13     {
14         protected void Page_Load(object sender, EventArgs e)
15         {
16             ConfigureCrystalReports();
17         }
18 
19         private ReportDocument myReport;
20         private void ConfigureCrystalReports()
21         {
22             //定義ReportDocument對象,裝載Crystalreport1.rpt
23             myReport = new ReportDocument();
24             string reportPath = Server.MapPath("Reports/CrystalReport1.rpt");
25             myReport.Load(reportPath);
26             //把模板對象賦給報表前端呈現控件CrystalReportViewerl
27             CrystalReportViewer1.ReportSource = myReport;
28         }
29     }
30 }

 實現效果同上

2.2、推(PUSH)模式

概念介紹:由應用程序從數據庫(源)獲取數據,然后把數據推送給水晶報表引擎。水晶報表本身不與數據庫進行交互。

1、要實現水晶報表推模式,首先我們需要在 網站項目中添加一個數據集。

 

2、然后你有兩種方式 創建數據表,這里我們選擇方式二創建。

3、把要顯示的表拖入右邊。

4、接下來要設計一個水晶報表模板。在Reports文件夾上右鍵添加新建項,步驟與上面推模式步驟一致,這里就不再詳細解說。

5、最后我們開始編寫頁面CrystalReport_Push.aspx后台代碼。

 首先引入如下命名空間:

using CrystalDecisions.CrystalReports.Engine;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ch02
{
    public partial class CrystalReport_Push : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            LoadCrystalReports();
        }

        //加載水晶報表
        private void LoadCrystalReports()
        {
            DataSet ds = new DataSet();
            string connStr = @"server=PC-201511211346\MSSQLSERVER2;database=Demo;uid=sa;pwd=123456";
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                string SQL = "select * from UserInfo";
                SqlDataAdapter sda = new SqlDataAdapter(SQL, conn);
                sda.Fill(ds, "UserInfo");
            }
            ReportDocument rd = new ReportDocument();
            //獲取報表路徑
            string reportPath = Server.MapPath("Reports/CrystalReport2.rpt");
            rd.Load(reportPath);
            //綁定數據集,注意一個表用一個數據集。
            rd.SetDataSource(ds);
            CrystalReportViewer1.ReportSource = rd;
        }
    }
}

 最后運行查看效果:

總結:此文章是對ASP.NET 水晶報表(Crystal Reports)的簡單使用做了一個學習總結,目的是為了幫助想要學習水晶報表的初學者做了一個入門指導,讓初學者少走一些彎路。


免責聲明!

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



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