Production of ASP 2008 Master-Slave Crystal Reports
Lin Qinhua我为人民鼓与呼
(Sichuan Information Technology College,Guangyuan 628017,China)
Abstract: When developing applications by using ASP 2008, we often make use of Crystal Reports to produce crystal reports. Crystal Report integrated by using VS 2008, we can produce single table, multi-table and crystal reports with subreport, and in this paper, the production of crystal reports with subreport is presented through a case.
0引言
任何应用程序,生成数据报表是一项很重要的功能。一个系统中可能有很多很重要的数据,使用水晶报表可以更好、更直观的把数据向用户展示出来。水晶报表的实现有多种方法,本文将在VS 2008环境下实现。 在报表中,有很多报表是主从结构的,比如学生管理系统中的系部和专业,一个系部会有多个专业,它们之间通过一个“系部编号”字段进行关联。要实现这种主从报表,可以使用水晶报表的分组功能实现。
1水晶报表概述
1.1 什么是水晶报表水晶报表即Crystal Reports,为希捷公司所开发的报表控件,现已集成到VS 2008开发环境中。水晶报表是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与
绝大多数流行开发工具的集成和接口。
1.2 水晶报表的功能水晶报表的功能很多,在此将只介绍当中的几种。①能直接访问各种数据源,如SQL SERVER、Oracle、XML等;②能方便的设计出高质量、美观的报表;③支持多种语言的编程(、Java等);
rop④导出功能,水晶报表能够导出为word、excel等文件格式;⑤打印功能。
2准备工作
为了介绍主从报表的创建,我们将以“学生管理系统”中的系部和专业两表为例。首先我们在SQL SERVER 2005中准备了Department和Profession两张表,它们以DepartmentID字段进行关联,Department是主表,Profession是从表。它们具体的字段和关联如图1所示。
数据准备好了之后,我们在VS2008中创建一个ASP Web应用程序项目,并在该项目中添加一个空白的Crystal报表,命名为“CrystalReport1.rpt”。
3准备数据源
水晶报表有两种开发模式:pull模式和push模式。
3.1 pull模式水晶报表直接从数据库中提取数据,即通过驱动程序连接到数据库根据需要将数据“拉”出来,不需要写代码。 3.2 push模式通过对象模型获取数据库数据,再将报表和对象关联起来,显示对象里的数据。这种模式需要写代码来实现。
在该实例中我们将使用push模式来实现。在项目中添加一个数据集,命名为“DataSet1.xsd”。在该数据集中添加2个DataTable,分别命名为Department和Profession,两表中的字段及其属性和数据库中的字段
相同。接下来创建两表间的关系,如图2所示。
到此,数据源准备结束,接下来我们使用数据库专家将DataSet1.xsd 设置为CrystalReport1的数据源,如图3所示。败坏了赫德莱堡的人
4报表设计
数据准备好了之后,我们将进行报表外观的设计。分为主报表和子报表。
4.1 主报表设计主报表将显示主表Department的内容,从字段资源管理器中把DepartmentID、DepartmentName和DepartmentHeader拖放到“Section3”节中,并修改各个字段的标题,其效果如图4所示。
致幻剂4.2 子报表设计子报表将显示各个系所属的专业情况。添加一个子报表“各系的专业”,使用报表向导设置该子报表要显示的数据为“Profession”表,要显示的字段为“ProfessionID”和“ProfessionName”,并使用“Department”表中的“DepartmentID”字段进行链接。子报表的效果如下图所示。该子报表放在主报表
“Section3”节后面,其效果如图5所示。
5在Web页面中显示览水晶报表的内容,命名为“CrystalReportViewer1”。接下来我们在后台编写代码,把数据库中的数据绑定到水晶报表中,并显示到页面上。其具体代码如下。
protected void Page_Load(object sender, EventArgs e)
//数据库连接字符串
无氰镀银string strconn=
"server=.;database=StudentMIS;uid=sa;pwd=sasasa";
//声明一个数据库连接对象
SqlConnection conn = new SqlConnection(strconn);
//从数据库中查数据
//注意:最终获取的记录集要和DataSet1的结构一致。如果不是,需要别名设置
string str1="select
DepartmentID,DepartmentName,DepartmentHeader from Department";
string str2="select
ProfessionID,ProfessionName,DepartmentID from Profession";
CrystalReport1 cr=new CrystalReport1();
DataSet1 ds=new DataSet1();
try
//数据库打开
conn.Open();博达大桥广告公司
SqlDataAdapter da1 = new SqlDataAdapter(str1, conn);
//注意表名和DataSet1中的一致
da1.Fill(ds, "Department");
SqlDataAdapter da2 = new SqlDataAdapter(str2,conn);
da2.Fill(ds, "Profession");
//将数据集传递给报表
cr.SetDataSource(ds);
/
/将水晶报表的内容通过CrystalReportViewer控件显示到页面上
CrystalReportViewer1.ReportSource = cr;
catch (Exception ex)
throw ex;
finally
//数据库关闭
conn.Close();
最终,页面上显示的效果如图6所示。
总之,水晶报表具有非常强大的功能,是进行报表开发的利器。本文仅以一个实例的方式对主从报表的制作进行简单的介绍,希望对需要在VS 2008中开发报表的有些帮助。
希望以上资料对你有所帮助,附励志名言3条:
1、常自认为是福薄的人,任何不好的事情发生都合情合理,有这样平常心态,将会战胜很多困难。
2、君子之交淡如水,要有好脾气和仁义广结好缘,多结识良友,那是积蓄无形资产。很多成功就是来源于无形资产。
3、一棵大树经过一场雨之后倒了下来,原来是根基短浅。我们做任何事都要打好基础,才能坚固不倒。