Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表。水晶报表是业内最专业、功能最强的报表系统,它除了强大的报表功能外。最大的优点是实现了与绝大多数流行开发工具的集成和接口。在VS.Net平台作过报表开发的程序员,必定都对水晶报表强大、高效、集成等特性留下了深入印象。 除了开发新程序外,在工做中咱们常须要接触到不少较早的软件系统报表功能升级的需求,若是能结合水晶报表这一强大的工具,每每能事半功倍。前端
在讲解水晶报表实现模式以前,首先讲解一下个人电脑使用配置环境:程序员
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
概念介绍:拉模式是由水晶模板(引擎)直接链接数据库(源),从数据库(源)里拉取数据。工具
一、首先在建立水晶报表拉模式以前咱们须要准备数据库数据:visual-studio
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建立一个空网站项目。学习
三、接着在该项目下右键添加一个Reports文件夹,用来管理水晶报表。开发工具
四、接着 在文件夹下右键选择添加"新建项目",找到"CrystalReports",输入报表名称。
五、点击添加按钮后,会弹出默认的水晶报表向导对话框,咱们按向导默认选项。
六、肯定后,打开“标准报表建立向导”界面。
七、链接数据库成功后,会在简历链接那里出现你的链接信息,而后选择你要显示的表。
八、这里选择你要显示的表字段。
九、点击下一步后后面弹出的选项能够不用选择,由于暂时还用不着,因此后面一直点击下一步到完成会出现如下界面。
十、看到上面这个界面,说明你已经建立了一个水晶报表模板,由于是直接链接数据库的,因此咱们能够能当即看到实际的效果,点击最下面的主报表预览,便可显示数据库的表数据。
至此,咱们没有敲过任何代码,拉模式报表建立完成。
在以前建立的项目中,添加一个Web窗体,命名为CrystalReport_Pull.aspx。
而后打开设计页面,找到工具箱中的报表设计,双击或单击拖入到Web窗体中,以下图所示。
方式一:不敲代码经过设计器绑定数据源,显示数据。
点击肯定后,你会看到Web窗体以下界面。
点击源,能够看到以下界面,设计器会自动生成如下代码。
最后咱们运行VS2013在浏览器中查看效果,发现什么都没有显示,而后打开浏览器调试工具发现,报了如下错误。
此问题解决办法以下:找到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 }
实现效果同上
概念介绍:由应用程序从数据库(源)获取数据,而后把数据推送给水晶报表引擎。水晶报表自己不与数据库进行交互。
一、要实现水晶报表推模式,首先咱们须要在 网站项目中添加一个数据集。
二、而后你有两种方式 建立数据表,这里咱们选择方式二建立。
三、把要显示的表拖入右边。
四、接下来要设计一个水晶报表模板。在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)的简单使用作了一个学习总结,目的是为了帮助想要学习水晶报表的初学者作了一个入门指导,让初学者少走一些弯路。