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

来源:http://www.cnblogs.com/SeeYouBug/archive/2017/02/13/6389085.html
-Advertisement-
Play Games

一、水晶報表簡介 Crystal Reports(水晶報表)是一款商務智能(BI)軟體,主要用於設計及產生報表。水晶報表是業內最專業、功能最強的報表系統,它除了強大的報表功能外。最大的優勢是實現了與絕大多數流行開發工具的集成和介面。在VS.Net平臺做過報表開發的程式員,一定都對水晶報表強大、高效、 ...


一、水晶報表簡介

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.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.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)的簡單使用做了一個學習總結,目的是為了幫助想要學習水晶報表的初學者做了一個入門指導,讓初學者少走一些彎路。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先下載 Gradle 通過官網進行下載 https://gradle.org 下載的文件名可能是 gradle 3.3 bin.zip 解壓 將此文件解壓到任意位置,如解壓到 /usr/local 下麵 sudo unzip d /usr/local gradle 3.3 bin.zip 設置環境 ...
  • awk: 強大的文本處理工具,擅長對日誌文件進行分析; 不僅用於Linux,也是任何環境中現在的功能最強大的數據處理引擎; 語法說明: awk '{pattern + action}' {filenames} pattern:指在數據中要查找的內容; action:指要操作的指令。 {}可以對一系列 ...
  • DMA即Direct Memory Access,是一種允許外設直接存取記憶體數據而沒有CPU參與的技術,當外設對於該塊記憶體的讀寫完成之後,DMAC通過中斷通知CPU,這種技術多用於對數據量和數據傳輸速度都有很高要求的外設控制,比如顯示設備等。 DMA和Cache一致性 我們知道,為了提高系統運行效率 ...
  • ARM是對記憶體空間和IO空間統一編址的,所以,通過讀寫SFR來控制硬體也就變成了通過讀寫相應的SFR地址來控制硬體。這部分地址也被稱為 I/O記憶體 。x86中對I/O地址和記憶體地址是分開編址的,這樣的IO地址被稱為 I/O埠 。本文只討論IO記憶體的訪問 IO記憶體訪問流程 我們知道,為了管理最重要的 ...
  • Saltstack是Python開發的,上千台的伺服器都可以管理。 運維重覆性工作:系統安裝、環境部署、添加監控、代碼發佈(基於git或svn二次開發)、項目遷移、計劃任務。 salt是一個新的基礎平臺管理工具。只需花費數分鐘即可運行起來,擴展性足以支撐管理上萬台伺服器,數秒即可完成數據傳遞。 sa... ...
  • 先上基礎,下圖是Linux的記憶體映射模型 1. 每一個進程都有自己的進程空間,進程空間的0 3G是用戶空間,3G 4G是內核空間 2. 每個進程的用戶空間不在同一個物理記憶體頁,但是所有的進程的內核空間對應同樣的物理地址 3. vmalloc分配的地址可以高端記憶體,也可以是低端記憶體 4. 0 896M ...
  • 內核中關於GPIO的操作API主要集中在和中,前者主要是GPIO直接與設備樹相關的操作,在 "Linux 設備樹操作API" 中已經記錄過,後者主要是針對GPIO本身的操作,常用的有下麵幾個。 ...
  • 1.前言 string是屬於引用類型的,這個大家都知道吧?但是平常在使用的過程中,發現它還是擁有一些值類型的特征的,這到底是為什麼呢? 原因就是.Net考慮到假如大量的操作string對象的時候,大量對引用對象進行操作的時候,性能肯定不如值類型來的爽快。.Net為了提高這個性能,提供了一個專門的解決 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...