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

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

 

1、水晶報表簡介

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

2、水晶報表的實現模式

在講解水晶報表實現模式以前,首先講解一下個人電腦使用配置環境:程序員

  Visual Studio 2013與SQL Server 2012web

由於VS2013沒有自帶建立水晶報表的功能,因此須要到網上下載並安裝一個插件,才能使用VS2013建立水晶報表。數據庫

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

插件安裝成功後打開VS2013,會發現工具箱裏多了這些東西,那麼說明你的VS2013已經安裝了水晶報表的插件,如今能夠經過VS2013建立水晶報表了。ide

2.一、拉(PULL)模式

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

2.1.一、不敲一句代碼建立水晶報表拉模式

一、首先在建立水晶報表拉模式以前咱們須要準備數據庫數據:post

複製代碼
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
複製代碼

二、而後,打開VS2013建立一個空網站項目。visual-studio

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

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

五、點擊添加按鈕後,會彈出默認的水晶報表嚮導對話框,咱們按嚮導默認選項。

六、肯定後,打開「標準報表建立嚮導」界面。

七、鏈接數據庫成功後,會在簡歷鏈接那裏出現你的鏈接信息,而後選擇你要顯示的表。 

八、這裏選擇你要顯示的表字段。

九、點擊下一步後後面彈出的選項能夠不用選擇,由於暫時還用不着,因此後面一直點擊下一步到完成會出現如下界面。

十、看到上面這個界面,說明你已經建立了一個水晶報表模板,由於是直接鏈接數據庫的,因此咱們能夠能當即看到實際的效果,點擊最下面的主報表預覽,便可顯示數據庫的表數據。

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

2.1.二、在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.二、推(PUSH)模式

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

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

 

二、而後你有兩種方式 建立數據表,這裏咱們選擇方式二建立。

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

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

五、最後咱們開始編寫頁面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)的簡單使用作了一個學習總結,目的是爲了幫助想要學習水晶報表的初學者作了一個入門指導,讓初學者少走一些彎路。

 

https://zhuanlan.zhihu.com/p/37993724

相關文章
相關標籤/搜索