简介&安装
2017年9月15日
1.1简介
Crystal Reports(水晶报表)是一款商务智能(BI)软件,主要用于设计及产生报表。
水晶报表是业内最专业、功能最强的报表系统,它除了强大的报表功能外。
最大的优势是实现了与绝大多数流行开发工具的集成和接口。在VS.Net平台做过报表开发的程序员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。 除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。
1.2 安装步骤
因为VS2013没有自带创建水晶报表的功能,所以需要到网上下载并安装一个插件,才能使用VS2013创建水晶报表。
插件下载地址:
http://www.aspsnippets.com/Articles/Download-Crystal-Reports-for-Visual-Studio-2013.aspx
插件安装成功后打开VS2013,会发现工具箱里多了以下这些,
那么说明VS2013已经安装了水晶报表的插件,可以创建水晶报表。
2.1 拉(PULL)模式
概念介绍:拉模式是由水晶模板(引擎)直接连接数据库(源),从数据库(源)里拉取数据。
2.1.1、不敲一句代码创建水晶报表拉模式
1、首先在创建水晶报表拉模式之前我们需要准备数据库数据
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窗体,在设计页面放置水晶报表控件。然后在aspx.cs文件内添加如下代码即可实现水晶报表拉模式。
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
public partial class CrystralReport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ConfigureCrystalReports();
}
private ReportDocument myReport;
private void ConfigureCrystalReports()
{
//定义ReportDocument对象,装载Crystalreport1.rpt
myReport = new ReportDocument();
string reportPath = Server.MapPath("Report/CrystalReport.rpt");
myReport.Load(reportPath);
//把模板对象赋给报表前端呈现控件CrystalReportViewerl
CrystalReportViewer1.ReportSource = myReport;
}
}
实现效果页面:
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;
}
}
}