水晶报表范文

时间:2023-03-22 16:52:33

水晶报表

水晶报表范文第1篇

【关键词】.NET环境;水晶报表;拉模式;推模式

一、水晶报表的模式

水晶报表是开发数据报表的利器,在.NET平台做过报表开发的程序员,一定都对水晶报表强大的报表设计功能留下深刻的印象。运用水晶报表进行开发,能够大大简化数据报表开发的难度,减少开发的工作量,其良好的接口功能,使得程序员在开发与维护过程中,往往能够取得事半功倍的效果。水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH)。下面将介绍水晶报表的这两种模式。

1.水晶报表的拉模式

水晶报表的拉模式是指直接从数据库获取数据,利用水晶报表的接口来实现报表展示,基本上不用手动编写代码。该种模式只需要调整模版就可以设计好水晶报表,与数据的连接和执行SQL命令都是交水晶报表来完成,其表现如图1所示。拉模式适用于不需要对数据库(或数据文件)中的数据进行额外的处理(如数值计算等)的情况,其优点是设计时非常方便,可以随时对设计的情况进行预览,但在应用程序部署时则比较繁琐(如需要设定数据库连接的数据源及驱动)。

在拉模式下,只要按照报表专家的向导来操作,水晶报表直接根据指定的驱动连接数据库然后组装这些数据,不需要开发人员编写代码。但是其缺点也是显而易见的,用拉模式设计的水晶报表在运行环境或者数据库变动时,其调整比较麻烦。另外在设计与实现上,拉模式的灵活性不足也是存在的一个问题,作为程序员,该模式是不被喜欢的,所以本文并不推荐使用水晶报表的拉模式。

2.水晶报表的推模式

在水晶报表的推模式实现上,开发人员要编写相应的查询代码与报表中的字段相匹配,并且代码中的数据库表也要跟水晶报表中的保持一致,不然水晶报表便显示不出数据,笔者在这一点上曾经吃过亏,调试了很久才发现这一疏漏。在简单的水晶报表实现上,相信有过这方面开发的人都有一定了解,但是涉及到多数据表展示在同一张打印报表上时,未必就有人知道了,本文接下来将介绍如何解决多报表打印这一问题。

(4)接下来便是设计水晶报表页面,首先便是绑定上面所示的数据源xsd文件,点击字段资源管理器―数据库字段,右键点击数据库专家。在数据库文件中选择我们创建的student.xsd文件。

设计数据报表:因为是多数据源展示到同一数据报表中,所以需要插入子报表。学生信息模块为主报表,家庭成员模块和操行评定模块为子报表。

点击主报表,右键―插入--子报表,选择链接标签,这里需要注意的地方是:主报表与子报表必须通过学生ID进行关联,这样才能使报表读到的学生信息是同一个学生ID的信息。子报表中的字段设置方法与主报表一样。

设计完报表,我们就可以运行我们所设计的报表界面。

三、结束语

学校学生学籍打印是学校学生管理系统的一项重要功能,运用水晶报表来进行学籍打印,能够大大减少学籍管理员的工作量。本文利用水晶报表来解决这一问题,希望能给大家提供借鉴与参考。

参考文献

[1]滕永富,孙振龙,田丽军,薛仁政.基于Web的研究生管理信息系统的设计与实现[J].齐齐哈尔大学学报(自然科学版),2010(03).

[2]李涛,屈展.基于.NET的Web动态报表研究与实现[J].科技资讯,2008(03).

[3]雷筱珍.水晶报表数据来源之.NET对象应用技巧[J].福建电脑,2010(11).

[4]张龙强.一种.NET下报表打印的方法与实现[J].电脑知识与技术,2010(19).

[5]石俊萍.基于C#水晶报表数据源动态绑定的实现[J].电脑与电信,2009(05).

[6]洪颖.基于.net平台下不同模式水晶报表的研究与实现[J].计算机与信息技术,2009(12).

[7]莫丽萍.基于.NETB/S模式中水晶报表打印与套打的实现[J].农业网络信息,2008(11).

作者简介:

余楷鑫,男,现供职于广州市机电高级技工学校,擅长.Net技术,有多年的Web系统开发经验。

水晶报表范文第2篇

.Net;水晶报表

1 引言

报表是一种数据管理工具,其目的是在于帮助用户快速掌握原始数据中的基本关系,以便进行有效的决策。水晶报表(Crystal Reports)是一款主要用于设计及产生报表的软件,是一个优秀的第三方报表开发工具,是业内最专业、功能最强的报表系统。它除了强大的报表功能外,最大的优势是实现了与Visual Studio所有开发工具的集成。

Visual Studio .Net中的水晶报表是一个实现原理比较复杂但使用方法十分简单的报表生成工具,它提供了非常丰富的模型,能够在运行时操作属性和方法,即可嵌入到C/S结构应用程序中,也可以加入到B/S结构的Web应用程序中。水晶报表可以在设计器中创建,用户可以设计标题、插入数据、公式、图表、子报表等操作。同时水晶报表查看器能够用于显示水晶报表的内容,包括图和表。此外,它还具有一些自带的功能,如翻页、跳转到某一页、打印报表、刷新、放大缩小和查找等。因此水晶报表查看器也是一种功能强大的控件。

2 .Net平台下水晶报表的控制模式

在.Net程序开发中,经常要对合并、汇总等进行编程,水晶报表大大简化了这些工作,用它能生成漂亮的图表和格式化文本,而且还能把报表导出为Word、Excel、PDF、HTML等格式。水晶报表程序控制上有两种模式,即拉(PULL)模式和推(PUSH)模式。选择的模式不同,程序实现上也会有很大差别。

2.1 拉模式(PULL)

拉模式是由水晶报表模板(引擎)直接连接数据库,从数据库里拉取数据。通常情况是我们在水晶报表里设置好数据库信息以及相关的表,当我们在程序中调用水晶报表引擎,挂载模板后,水晶报表引擎会根据模板里的数据库信息,及表信息主动连接数据库,返回数据给报表模板,模板根据设计样式进行呈现。

2.2 推模式(PUSH)

推模式是由应用程序从数据库获取数据,然后把数据推送给水晶报表引擎,水晶报表本身不跟数据库进行交互。使用推模式将会比拉模式要多写一些代码。

2.3 拉模式与推模式的比较

由于拉模式是直接连接数据库,和推模式相比,在推送给水晶报表引擎的过程中少了推送给中间结果集这么一个步骤,而中间结果集本身就占用系统资源,所以拉模式比推执行效率高。

在推模式中,数据库是由应用程序去连接的,水晶报表本身不连接数据库。这样,系统就能使用公用的数据库连接,也就节约了数据库的连接消耗。这一点,在多用户的系统环境内,少一次数据库连接对系统和系统性能的影响是比较关键的。

当然我们也应该注意到,推模式因为存在一个中间结果集,所以会占用系统资源,也正是因为这个中间结果集的存在,使得从数据库获取数据后,能够对数据进行再加工,从而使水晶报表更加灵活多变。所以在具体实现的时候,要综合考虑实际情况来决定采用哪种模式实现。

3 .Net平台下水晶报表的实现

.Net平台下水晶报表开发最重要的步骤是数据的获取。在拉模式中,数据获取这一步骤是由.Net内置的水晶报表引擎自动处理,不需要编写任何代码,因此这里主要讨论推模式的实现。实现过程主要涉及以下两个文件:数据集(.xsd文件)、水晶报表(.rpt文件)。

3.1 实现步骤

(1)建立解决方案,在其管理器中添加数据集,在解决方案中生成.xsd格式的文件。具体过程为:添加添加新项类别数据模板数据集。

(2)在服务器资源管理器中,添加数据连接,选择所要连接的数据库,将数据表拖到之前建立好的数据集上,保存整个项目。

(3)在解决方案资源管理器中,添加“Crystal Report”模板,通过“报表专家”完成报表设计。具体过程为:报表专家数据库专家项目数据ADO.NET数据集选择所需数据集对象插入数据表。

3.2 关键功能代码

(1)在项目的数据访问层编写获取数据表字段的方法GetFields,该方法返回的为数据集。

Public static DataTable GetFields()

{

Database db= DatabaseFactory.CreateDatabase fftConnectionString");

String strSql= "select 列名集合 from 表名 WHERE 条件";

DataTable dtc=db.ExecuteDataSet(CommandType.Text,strSq1).Tables[0];

return dtc;//通过命令方式生成数据表

}

(2)添加Web页面Page_Load事件处理程序。首先,实例化一个DataTable对象dtl,调用GetFields方法,将返回的数据集赋给dt1,然后将dt1绑定到相关显示及格式化控件上。其次,实例化一个DataSet对象ds2,创建新命名的DataTable,比如,MyDataTable,并为其添加新列,比如,MyCol1、MyCol2,后将ds2用Session保存。

using CrystalDecisions.Shared;//必须引入水晶报表的类库

using CrystalDecisions.CrystalReports.Engine;

CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));//制定报表路径及文件

if (1sPostBack==false)//Form_Load()事件的部分代码

{

DataTable dtl=new DataTable();

DropDownList1.DataSource= dt1;//将数据表中的数据加载到显示或格式化数据空间,本例为DropDownList1.

DropDownList1.DataTextField="COLUMN_NAME";

DropDownList1.DataBind();

DataSet ds2=new DataSet();//生成数据集,本例为MyTable

ds2.Tables.Add("MyTable");

DataColurrm MyCol=new DataColumn();//生成数据列类,并添加新列

MyCol.ColumnName="MyCol1" ;

MyCol.DataType=System.Type.GetType ("System.String");

ds2.Tables["MyTable"].Columns.Add(MyCol);

MyCol=new DataColumn();

MyCol.ColumnName="MyCol2";

MyCol.DataType=System.Type.GetType("System.String");

ds2.Tables["MyTable"].Columns.Add(MyCol);

Session["dsTemp"]=ds2;//将数据集以变量形式保存为会话

}

(3)报表文件的绑定

DataTable MyTable=new DataTable();

MyCrysta1.SetDataSource(MyTable);//设置报表文件MyCrysta1的数据表来源

CrystalReportViewer1.ReportSource= MyCrysta1;//设置报表控件的报表文件来源

CrystalReportViewer1.Visible=true;//报表显示

4 利用向导制作报表

除了使用程序方式开发报表外,还可利用报表向导轻松地完成一个报表。首先新建一个WebSite,添加报表,向导会提示创建一个数据源并打开数据库工具,根据提示,很容易就能生成一个数据源,作为报表的数据来源。在报表设计器中,可以根据需要画出想要的报表,并从“数据源”中选择想要的数据。这样,就完成了一个报表,接下来就可以使用ReportViewer控件来显示这个报表了。新建一个WebForm,从工具箱中拖一个ReportViewer控件到页面上,它会提示你选择报表,我们就选择刚才设计的报表,运行程序就能看到想要的东西了。

5 结束语

在环境下采用水晶报表开发Web动态报表,利用水晶报表本身提供的报表设计器和.Net提供的丰富特性,通过推模型从数据库中读取满足查询条件的数据,从而灵活地产生报表输出。这种设计方法在系统开发中可以作为一种通用的查询方法,因此能够减少系统的开发和维护的工作量,极大地提高系统的开发效率。同时,可以减少系统的复杂度,增加报表系统开发的可复用度,是一种比较实用的报表系统解决方案。

参考文献

[1]张荣圣,侯鹏志,郭圣路.Crystal Reports 2008.水晶报表从入门到精通.北京:电子工业出版社,2010.

水晶报表范文第3篇

【关键词】水晶报表;成本管理系统;数据库连接

成本管理系统专门处理采用计划成本核算的材料成本,计划成本法的物料通过该系统录入计划价调价单,以调整计划单价。可查询、修改、审核计划调价单,并查询计划成本法物料的历史计划价格。

1.系统设计

本系统采用.NET框架结构,B/S体系结构,IIS6.0的Web服务器软件、SQL Server 2008、采用Visual 内置的CrystalReport水晶报表控件,基于技术的系统的三层结构模型即:表示层、业务层、数据层对实现系统开发。

该系统的报表部分主要包括:施工管段的工程信息以及材料信息报表、施工队的工程信息以及材料信息报表、施工管段的责任预算分解报表、施工队的责任预算分解报表、施工队的验工计价报表、各类责任预算执行报表、施工图工程信息报表、变更索赔报表、各类数量汇总报表、各类管理费报表、每月实际发生费用报表、责任预算汇总报表、验工计价汇总报表、实际费用汇总报表等。系统数据流图如图1所示。

图1 系统数据流图

2.水晶报表的应用

在下水晶报表的实现过程中,最重要的是数据的获取。在拉模式中,数据获取这一步骤是由内置的水晶报表引擎自动处理,不需要编写任何代码。因此这里主要讨论推模式的实现。

实现过程主要涉及以下两个文件:数据集(.xsd文件)、水晶报表文件(.rpt文件)。

实现的顺序为:

(1)建立数据集文件;

(2)建立水晶报表文件;

(3)编写填充数据集、设置报表数据源的代码。

给数据集填充数据以及水晶报表显示的关键代码如下:

设计完报表,我们就可以运行我们所设计的报表界面。

3.结束语

成本管理系统是企业信息系统中重要的组成部分,通过它企业管理这可以有效性的了解成本和控制预算。本文将水晶报表应用与成本管理系统中,极大的方便了用户查询和统计各类数据,为用户提供了简单的操作和数据打印功能。

参考文献

[1]陈峰棋.深入浅出程序设计[M].北京:中国水利水电出版社,2004.

[2]房大伟,吕双,刘云峰编程宝典(C#)[M].人民邮电出版社,2004.

[3]富君.NET平台下水晶报表的应用[J].中国水运,2007.

[4]George Peck.李行武,施妍然,译.水晶报表设计与开发大全[M].清华大学出版社,2004,5.

[5]季久峰,梁健全,宋修舵,孙强开发答疑200问[M].人民邮电出版社,2004,9.

作者简介:

周伟(1980―),男,湖北人,博士,讲师,现供职于华中师范大学计算机学院,研究方向:软件工程。

水晶报表范文第4篇

关键词:毕业生问卷调查系统;.NET;水晶报表

中图分类号:G717文献标识码:A文章编号:1671-0568(2012)41-0160-02

为了收集到更多毕业生对专业设置,课程体系、任职要求等内容的评价信息,需要利用现代化手段提高工作效率,改变以往书面、抽样和人工统计数据的方式,通过网络调研平台进行更加简捷、准确、有效的问卷调查,反映目前专业建设中的质量状况,作为调整专业人才培养制订规划的重要参考依据之一。目前,满足各种需求的问卷调查系统也带来了一些便利,但是具体到高职院校的毕业生相关数据统计中存在的一些问题,例如数据统计表现形式较单一、不够直观、针对性不强、题型设置不够灵活、对调查问卷数量限制,等等。研究并设计基于Web的毕业生问卷调查系统,帮助教研室和学校管理部门提高工作效率,用直观和快捷的方式提供满足各部门需求的数据和图表,是当前需急迫解决的问题。

一、开发工具

本系统采用基于的三层结构来实现,开发环境和工具有Visual Studio 2010+SOL Server 2005+.NET Framework4.0+Crystal Report Designer,语言使用C#。

二、系统设计

本调查问卷平台系统采用三层结构,安全快捷,操作方便,即时生成问卷,即时投票,即时分析数据,生成图表,可以让各项统计数据之间的对比与差异关系一目了然,大大提高了工作的效率,并且可以通过数据库永久地保存调查的结果,为以后调查提供参考。该系统主要功能包括有:①丰富的问卷题型。包括单选、多选、单行文本、多行文本、下拉框,可以限定文本输入的格式为日期、数字、Email。②强大的数据处理分析能力。调查结果整体分析,分时段调查统计,分题目统计,统计报表,统计结果可生成柱状图、条形图、饼图。③导出各种报表文件。将报表灵活导出所需的格式,如PDF、WORD、EXCEL、HTML文档。④打印输出报表和问卷。可以按照部门格式要求打印出报表和问卷。⑤毕业生进入系统并在有效期内进行投票,管理员可以完成生成问卷、管理问卷、查看报表、统计数据、打印报表、数据备份等功能。

三、水晶报表的应用

在系统设计过程中,使用.NET平台中的水晶报表工具来处理数据库中的数据,帮助用户分析和解释重要信息。第一次打开VS2010创建水晶报表时,提示要下载SAP旗下的CrystalReportforVS2010,在SAP官方网站上下载安装名为CRforVS_13_0_2的可执行文件,其安装过程基本为全自动安装,不需要选择安装路径,按照提示单击“下一步”即可完全安装。

1.水晶报表的结构

客户端:只需安装浏览器,浏览器可以访问嵌入进Web页面的报表。

服务器端:通过水晶报表引擎可以完成数据合并、数据筛选、转换文件格式等功能。

Rpt报表文件:通过中的可视化编辑环境创建报表,设计报表头、页眉、详细资料、报表尾、页脚。

数据源:报表取得数据的方式取决于数据访问模式,在拉模型中,进行数据库的连接,执行SQL指令获得数据不需要手写代码,而是由水晶报表本身处理;在推模型中,需要开发人员创建数据集和报表文件,编写代码连接到数据库并执行SQL命令,并将对象传递给报表。

CrystalReportViewe腔件:该控件属于Web服务器控件,主要用于在Web窗体页面中呈现报表。

2.动态创建水晶报表

在该系统开发过程中,基本采用的是动态创建水晶报表的方式,即自己编写代码连接数据库,对数据进行筛选并组装成数据集,也可根据查询条件的不同,在水晶报表中呈现出查询所得的数据。在.NET平台下动态创建水晶报表的大致步骤如下:

(1)新建数据集(.xsd)文件,从“服务器资源管理器”的数据库中拖放“votes”表到数据集文件的设计窗口中,会产生“votes”表的结构图。

(2)新建Rpt报表文件与数据集文件进行数据源连接,并按照要求设计报表文件,放置表头和各字段的位置。

(3)新建web窗体页面,拖放一个CrystalReportViewer控件与其Rpt报表文件进行绑定。

(4)编写代码中访问数据库并把数据存人数据集,设置CrystalReportViewe控件的ReportSource属性。

protected void Page_Load(object sender,EventArgs e)

{string

strConn=“Data

Source=SS1;InitialCatalog=aa;Integrated Security=True“;

CrystalReport cr=new CrystalReport();

DataSet ds=newDataSet();

SqlConnection conn=Hew SqlConnection(strConn);

Conn.Open();

string strSql=“Selectfrom t1”:

SqlDataAdaptcr sAdapter=Hew SqlDataAdapter(strSql,conn);

SAdapter.Fill(ds,“TI”);

Cr.SetDataSource(ds);

This.CrystalReportViewerl.ReportSource=cr);

水晶报表直接连接到数据库会较长时间占用数据库连接,影响系统性能,使用DataSet创建报表,它是不依赖于数据库的独立数据集合,并且可以获得来自于Web服务的数据,制作符合呈现样式的报表。

水晶报表范文第5篇

〔关键词〕水晶报表;查收查引;自动生成;PDF

DOI:10.3969/j.issn.1008-0821.2017.04.020

〔中图分类号〕G250.7;TP393〔文献标识码〕A〔文章编号〕1008-0821(2017)04-0129-05

Design and Implementation of Automatical Generation of Database

Retrieving and Database Processing Reports Based on Crystal ReportsKan Honghai1Zhao Jie2

(1.Library,Shandong University at Weihai,Weihai 264209,China;

2.Library,Shandong University,Jinan 250100,China)

〔Abstract〕PDF documents have the characteristics of cross media,cross platform and high security,so they are suitable for the save format of database retrieving and database processing reports.This paper took Shandong University librarys database retrieving and database processing reports as an example,and based on the analysis of the characteristics of the report template format,it realized the automatical generation of database retrieving and database processing reports in PDF format by using crystal reports.This paper then introduced in detail the three key steps of making and merging the page-break reports,making the cover page reports,and making the attachment page reports.

〔Key words〕crystal reports;database retrieving and data processing;automatical generation;PDF

查收查引服沼殖坡畚氖章家用服务、代查代检服务,主要是通过作者姓名、单位、文献篇名、期刊名称及卷期、会议名称等字段,检索委托人或委托单位的论文被国内外权威数据库收录以及引用情况,并出具纸质的检索证明[1]。高校图书馆大都拥有国内外各类权威数据库的使用权限,查收查引服务已成为高校图书馆信息检索工作的一项重要内容。

查收查引服务是工作量大、重复度高的劳动,为提高工作效率、规范报告格式,很多高校图书馆和科研单位自主开发了相关的自动化系统,比较典型的有清华大学研发的代查代检服务系统[2]、中国科学院软件研究所研发的科技文献查收查引报告自动生成系统[3]、北京邮电大学图书馆研发的关于科技查新的WEB在线服务系统[4]。这些系统实现了查收查引工作的网上提交、检索员网上录入检索结果、费用管理等自动化流程,中国科学院研发的系统还实现了被引和他引的自动识别。这些系统最后都能够自动导出报告,但都没有介绍导出报告的格式和技术细节。

山东大学在设计自己的查收查引系统时,综合比较分析了当前各种主流文档格式的特点,最后认为PDF文档具有跨媒体、跨平台、安全等特点[5],适合作为查收查引报告的最终输出格式。利用水晶报表软件自动在线生成PDF格式的查收查引报告,不仅提高了工作效率、保证了报告格式的一致性,又提高了图书馆存档文件的规范化和标准化。

1报告格式分析及实现难点

1.1查收查引报告格式分析

如图1所示,山东大学图书馆出具的查收查引报告都由统一的模板生成,保证了报告格式的统一性和内容的完整性。报告的内容及格式特点主要有:

1)报告内容分为3部分:封面、附件一、附件二,每部分都有独立的格式。封面只有1页,附件一和附件二如果内容过长会有多页,但附件一和附件二页脚的页码都是独立编号,都从1开始,如附件二第1页页脚显示为“(附件二)第1页,共1页”。

2)封面左上角是当前报告的编号信息,如“检索编号:JS120170001”。本检索编号同时出现在附件一和附件二的页眉位置,附件一和附件二的页眉信息对应是“教育部科技查新工作站Z06山东大学图书馆检索编号JS120170001”。

3)封面主体部分显示委托人、委托单位、检索内容、检索数据库、检索结果,底部显示检索人、检索单位、检索日期。

4)附件一显示被检文献列表。横线下“委托人发表文章的收录情况列表”是页眉的一部分。被检文献列表按照索引数据库分组显示,如本示例中,先显示“以下为张三论文被SCI-E收录情况”,跟着是3篇SCI-E文章,再后面是分组二“以下为张三论文被Ei Compendex收录情况”。每组的文章都从1开始单独编号。

5)附件二是检索到SCI-E文章所发表期刊的JCR详细指标信息。主体部分按“期刊/年代”逐条显示,表头显示期刊名、ISSN、参考年、参考年影响因子,然后以表格形式列出了期刊指定年份的各类影响因子指标。如果被检文献没有被SCI-E收录,报告就没有附件二,只有封面和附件一。

1.2自动生成PDF报告的技术关键点分析

根据以上分析,山东大学的查收查引报告,虽然内容繁多、格式严格,但又有一定的规律性。根据格式上的规律特点,应用计算机软件自动生成PDF报告是可行的。以下是几个需要重点解决的技术关键点:

1)封面只有1页,显示内容的位置相对固定。而附件二和附件三随着内容增加会有很多页,而且有着不同于封面的页眉和页脚。如何设计模板同时生成这3类内容的页面,是需要首先解决的难题。

2)封面主体部分主要显示委托人、委托单位、检索内容、检索数据库、检索结果。如果检索内容的详细内容过长就会自动换行,导致下面检索数据库标题和内容的位置也需要跟着下移。同理,如果检索数据库内容过长出现换行,也会导致后面检索结果位置下移。如何检测内容过长会出现换行,并定位下面行的显示坐标,也是本系统的难点。

3)附件内容的生成。附件一先按索引数据库分组,然后分篇显示被检文献详细内容。附件二按“期刊/年代”逐项显示,以表格形式显示期刊某一参考年份的影响因子指标。严格的格式要求,给设计报表模板带来不小的技术难度。

2系统的总体设计

2.1运行环境及系统架构

考虑到检索员众多、检索员办公地点分散、系统升级维护方便、检索报告便于统一存档管理等因素,山东大学的查收查引报告管理系统采用B/S架构(即浏览器/服务器模式),检索员和委托人通过客户端电脑安装的浏览器直接访问系统,实现各类操作。

为提高整个系统的扩展性、可维护性和健壮性,在设计软件框架时我们采用了流行的三层架构体系,将整个软件系统分为表现层、业务层、数据层[6]。如图2所示,自动生成PDF报告模块位于中间的业务层。操作员通过表现层界面调用PDF报告生成模块,生成模块通过数据层的数据访问适配器从数据库里调用已保存好的委托人姓名、检索结论、检索文章列表等信息,自动在服务器上生成PDF格式的查收查引报告文档,并归档保存在服务器上指定目录下。检索员打印报告时,根据系统生成的加密链接从服务器上调取查收查引报告,报告调取到客户机缓存后可以打开预览,确认无误后打印交付给委托人。

2.2报表生成软件的选择

为了简化部署、提高系y的扩展性,本系统采用Visual Studio 2012作为开发平台,C#作为开发语言,Sql Server 2008作为后台数据库。在报表软件的选择上,本系统最终选用了水晶报表来实现PDF格式查收查引报告的自动生成,主要考虑到水晶报表有以下优点:

1)水晶报表是业内最专业、功能最强的报表系统。它不仅具有强大的报表功能,还实现了与绝大多数流行开发工具的集成和接口,特别是Visual Studio[7]。本系统使用的Crystal Report 13.0.5版本,可以很好地集成到开发环境Visual Studio 2012内,具有强大、高效、集成等优势。

2)水晶报表提供了强大的报表设计工具Crystal Report Designer,具有数据可视化和分析功能。在数据控制方面,提供了拉模式(Pull Model)和推模式(Push Model)两种方式[8]。拉模式是由水晶报表模板(引擎)直接从数据库里拉取数据,可以用来显示报告编号、检索人、检索日期等固定信息;推模式由应用程序从数据库获取数据,经过数据处理后再把数据推送给水晶报表引擎,可以用来分组显示检索文章列表等这些复杂的内容。

3)水晶报表能够稳定、高效、动态地将报表导出成为.pdf、.doc、xls、html、rtf等多种格式。本系统借助水晶报表将查收查引报告导出为PDF格式的文档,并保存在服务器上。

3水晶报表在线生成PDF格式报告的关键技术

3.1报表模板的设计及打印

在报表开发工作中,首先要确定报表的种类和格式,然后针对性的制作一个报表模板,模板主要包含要打印的数据和显示格式。如前面所述,查收查引报告的内容包含封面、附件一和附件二这三部分内容,这三部分在内容、格式、显示数据上差别很大。要想在一个报表模板上显示这三部分,实现起来难度很大。

为解决这一难题,本系统开发时创建了3个水晶报表模板文件cover.rpt、attachment1.rpt、attachment2.rpt,分别 用来生成封面、附件一、附件二。程序运行时3个报表模板文件在服务器上分别生成3个临时的PDF文件,最后再把这3个文件合并成一个最终的查收查引报告文件。通过水晶报表模板文件cover.rpt在服务器上生成报告封面的PDF文件的核心代码如下,生成附件一和附件二PDF文件的过程和生成封面的代码类似。

ReportDocument oRpt=new ReportDocument();

string strPath=Server.MapPath(″\\CrystalReport\\cover.rpt″);

oRpt.Load(strPath);

CrystalDecisions.Shared.DiskFileDestinationOptions crFileOptions=new CrystalDecisions.Shared.DiskFileDestinationOptions();

string fileName=DateTime.Now.ToString(″s″)+″cover.pdf″;

string fileFullName=HttpContext.Current.Server.MapPath(″~/PdfFolder/temp/″)+fileName;

crFileOptions.DiskFileName=fileFullName;

oRpt.ExportOptions.DestinationOptions=crFileOptions;

oRpt.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile;

oRpt.ExportOptions.ExportFormatType=ExportFormatType.PortableDocFormat;

oRpt.Export();

3个文档都生成后,最后需要合并成一个PDF文件。合并时,先在服务器上建立一个空的PDF文件,然后依次打开封面、附件一、附件二这3个文件,把3个文件内的页面分别按顺序导入到新建立的空PDF文件内。附件二的页面导入到新建立PDF文件内的核心代码如下:

3.2封面页水晶报表模板的制作

在Visual Studio 2012设计器内,添加报表模板文件cover.rpt,如图3所示。页眉显示项、证明编号标题、检索证明等固定显示项,通过从工具栏拖动Text Object控件到模板指定位置添加,并设置控件Text属性为显示内容。证明编号、检索人、检索日期等这些每篇报告都显示不一样的地方,也用类似的方法添加Text Object控件,控件的赋值可以采用拉模式直接从数据库里拉取数据,也可以在程序代码里通过控件名称直接赋值,给显示证明编号的文本控件txtPdfNo在程序里赋值时的核心代码如下:

∥临时表dtList内保存了当前查收查引记录的申请人、编号等基本信息

txtPdfNo.Text=dtList.Rows[0][″PDFNO″].ToString();

封面主体部分显示委托人、委托单位、检索内容、检索数据库、检索结果。如果采用Text Object控件显示各项的标题和内容,模板设计时各项的显示坐标是固定的,不会随着内容的换行自动调整。为解决这一难点,本系统在数据库里建立数据表RetrievePMain,列标题和内部初始数据如表1所示。

在“字段资源管理器”的“数据库字段”上按右键,选择“数据库专家”,建创建新连接,从OLE DB(ADO)下选择Microsoft OLE DB Provider for Sql Server,一步步操作,最后选择表RetrievePMain。最后回到“字段资源管理器”界面,将字段Title和Cont分别拖到Cover.rpt模板文件Section3(Details)节内,并调整显示位置和显示格式,实现显示数据的绑定[9]。数据库内,Cont字段内容是空的,没有保存数据,数据在打印时由程序根据要显示的具体报告在临时表dtPMain内动态生成。核心代码如下:

3.3附件页水晶报表模板的制作

附件一用来分组打印被检文献列表,打印时先按照被收录数据库分组,报表设计界面如图4所示。设计时和前面设计封面模板的步骤相似,先在字段管理器内将表RetrievePList加载进来。然后在空白位置点右键,弹出窗口内选择Report-Group Export,打_分组设计向导,将表RetrievePList的INDEXGNAME字段添加到右边选择框内,实现打印列表按照收录数据库名分组[10]。最后将被检文献序号ID和文献内容DETAILS拖到报表设计器Section3(Details)节内,并调整位置和显示格式。

附件一显示格式和内容都有严格要求,数据库内直接拉取的数据不能完全满足显示要求,因此需要采用推模式显示被引文献列表,具体步骤和封面主体内容生成步骤类似,先将数据加载到临时表dtArticle,然后根据显示要求修改dtArticle内的数据,最后绑定报表模板输出。表dtArticle的INDEXGNAME字段表示文献显示时的组标题,代码处理时逐行遍历表dtArticle内记录,按照要求修改INDEXGNAME的值,核心代码如下:

代码内strAuthorName表示委托人姓名,dtArticle.Rows[i][″INDEXNAME″].ToString()表示当前文献被索引数据库的名称,如本例第一篇文献的INDEXGNAME会赋值成“以下为张三沦为被SCI-E收录情况:”。

附件二用来显示SCI-E收录文献的期刊的详细影响因子列表。报表设计时直接采用拉模式绑定数据表RetrievePIF,然后拖动要显示的字段到报表设计器上。

4结语

本文开发的基于水晶报表的查收查引报告自动生成系统,已经正式应用到山东大学的查收查引管理系统。经过1年多的使用,系统运行稳定,并根据检索员的使用建议不断优化。经过对比测试,检索员录入数据由系统在线自动生成PDF文档,与检索员将数据拷贝到WORD模板内排版并生成PDF文档相比较,采用系统能平均节省2/3以上的时间。而且,采用系统自动生成PDF报告,具有准确度高、格式统一、自动在服务器集中存档等优点。本系统基于水晶报表自动生成PDF格式文档,也可以应用到查新报告工作中,根据输入项自动生成PDF格式的查新报告。

同时我们也能发现,最终报告的格式和显示的内容,直接依赖制作的报表模板文件。显示信息项、显示格式、及辅助的表格线等信息都固定在报表模板上,难以灵活变动和增删。这一不足制约了后期报告格式的修改,更不利于在其它检索单位推广。如何进一步开发本系统,允许用户根据本单位查收查引报告的格式要求,通过图形化界面自定义报表模板,灵活修改报表模板显示的信息项、显示格式、显示位置等内容,是值得进一步研究的地方。

参考文献

[1]梁红妮,胡小飞.论文查收查引服务的分析与探讨[J].情报理论与实践,2009,(4):96-99.

[2]战玉华,程爱平,钱俊雯,等.代检代查服务系统的开发及应用[J].图书情报工作,2005,(11):75-77,55.

[3]王学勤,郝丹,郑菲,等.“查收查引报告自动生成系统”应用实践研究[J].图书情报工作,2014,(16):131-137.

[4]侯瑞芳,陈嘉勇,周婕.查收查引服务优化体系的构建与思考[J].图书馆建设,2015,(4):75-79.

[5]胡荣磊,左良,蒋华.PDF版式文档在电子签章系统中的应用与实现[J].信息技术,2016,(4):64-68.

[6]密君英.基于三层架构的项目实战教程[M].北京:中国电力出版社,2011:8-10.

[7]百度百科.水晶报表[EB/OL].http:∥/link?url=C-T6BSTtmtHqt-LRCcuStNJmoSz89gmSX8vAZinxIUTEtrdz CF0heXnOoW2MNL-H8HpmnFXuXrTc6ohRNoW5Fk2Ru2Rrg87eC6o uWgqnEZrn-ia3Rb9G4dC4gMaIQ,2017-01-23.

[8]丛凤侠,杨玉强.通用水晶报表平台关键技术研究[J].计算机技术与发展,2013,(6):219-222,226.

[9]王华杰,李律松,孙一波.精通C#数据库开发[M].北京:清华大学出版社,2004:107-108.

水晶报表范文第6篇

关键词:水晶报表;拉模式;推模式;数据集

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2010) 14-0000-02

The Model and Application of Crystal Reports and Database Connection

Chen Chang

(Changsha Social Work College,Changsha410004,China)

Abstract:Pull mode and Push mode is the crystal reports and the database connection in two ways.Crystal reports pull mode is directly connected to a data source,with a simple operation,high efficiency;push mode is the first data source in the data cache to the data set,then the data pushed to crystal reports,with a flexible,can reduce database connection loss of benefits.We can choose the actual situation of the project needs an appropriate model.

Keywords:Crystal report;Pull mode;Push mode;Data set

水晶报表是Visual 中标准的报表制作工具,具有强大的报表功能,实现了与绝大多数流行开发工具的集成和接口。水晶报表需要通过数据库驱动引擎与数据源连接起来,实现对数据的访问,具体有拉模式与推模式两种方法。

一、拉(Pull)模式

在拉模式中,数据库驱动器直接从数据源中提取数据,水晶报表自动创建并管理SQL命令,实现数据源的连接和数据的提取。开发者不需要为报表与数据源编写代码,实现的过程比较简单,很多初学者喜欢采用这种方式。下面用实例说明拉模式的应用。

已知数据库HR中有表Employee保存了员工的详细信息,字段cEmployeeCode是主键;表MonthlySalary存放了员工各月份的工资,字段cEmployeeCode与字段dPayDate组成了主键;需要利用水晶报表显示指定月份的员工的工资及员工的详细信息。首先添加新项CrystalReports1,然后使用报表向导,从数据库专家创建新连接,选择OLE DB创建数据库连接;然后选择需要的表及链接(如图1所示),在字段资源管理器数据库字段中将报表需要显示的内容拖动到详细资料,选择专家设定筛选条件(如图2所示),就可以在报表预览中看到最终的结果。

这是一个采用拉模式对多张表进行数据筛选的典型例子,操作简单,不用编写任何代码,功能强大。

二、推(Push)模式

在推模式中,数据源中的数据先被缓存到数据集中,多个水晶报表可以访问同一数据集中的数据。开发者需要编写代码来实现与数据源的连接,执行SQL命令从数据源中提取数据并填充到数据集,将数据集的数据传送到报表。下面给出采用推模式实现的过程。

第一步,在创建的WindowsApplication项目中添加数据集DataSet1,将数据库项从服务器资源管理器拖放到设计器,如图3所示。

第二步,添加水晶报表CrystalReports1,然后使用报表向导,在可用数据源中选择数据集,将DataSet1中的表添加进来(如图4);从字段资源管理器数据库字段中将报表需要显示的内容拖动到详细资料。这时需要注意的是,在主报表预览中是水晶报表的一个虚拟数据,可以看到一个最终显示的效果。

第三步,在Form1窗体中添加控件对象crystalReportViewer1,用来显示水晶报表。

第四步,添加代码。

(1)创建CrystalReport1的实例;

public CrystalReport1 objCrystalReport=new CrystalReport1();

(2)连接数据源;

string strCon="Data Source=SERVER1;Initial Catalog = HR;Integrated Security=true";

SqlConnection con=new SqlConnection(strCon);

(3)创建DataAdapter对象,填充数据集;

SqlDataAdapter da=new SqlDataAdapter("select*from Employee",con);

DataSet1 ds=new DataSet1();

da.Fill(ds,"Employee");

da=new SqlDataAdapter("select*from MonthlySalary",con);

da.Fill(ds,"MonthlySalary");

(4)设置水晶报表实例的数据源;

objCrystalReport.SetDataSource(ds);

(5)将含有数据的报表对象绑定到水晶报表查看器上。

crystalReportViewer1.ReportSource=objCrystalReport;

三、结论

拉(Pull)模式执行效率高,开发简单,适用于WinForm程序,但是多了一个数据库连接,而且这个链接的占用时间还比较长,所以不适合用户多的系统。推(Push)模式则很灵活,可以承接任何数据源,数据可以来自数据库,或者是来自于WebService等其他应用的数据接口;另外,可以大大增强数据库检索能力,同时一个数据集可以为多个水晶报表提供数据。

参考文献:

[1]王宁,王亚飞,刘亮亮.基于.NET平台的推模式水晶报表的应用.黄河水利职业技术学院学报,2008,20,4

作者简介:

水晶报表范文第7篇

关键词:水晶报表 动态 交叉表

一、引言

几乎在所有的应用程序中报表都是程序员头疼的问题。在.Net环境下包含了功能强大的报表工具:水晶报表(Crystal Report)。

Crystal Reports通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。为了向开发人员提供最灵活的数据访问方法,Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。

拉模型

在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来(见图1)。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由Crystal Reports本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。

推模型

相反,推模型需要开发人员编写代码以连接到数据库,执行SQL命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表(见图2)。该方法使您可以将连接共享置入应用程序中,并在Crystal Reports收到数据之前先将数据筛选出来。

本文为了实现动态按条件生成报表的,因此主要采用推模型。

交叉表是一种非常常见的报表形式。一般的二维表只有列头,行就是数据,而交叉表(Cross Table)是行和列都有相应的行头和列头,中间的格子是交叉汇总项。原来的数据标题(字段)在两列上,但是现在想给其中一个列放到水平方向,形成行列交叉,交叉点求出统计结果,得出直接在表中不能看出的分析数据。交叉表查询显示来源于表中某个字段的总结值(合计、计算以及平均值等),并将它们分组放置在查询表中,一组列在数据表的左侧,一组列在数据表的上部。

本文将从完成“阳易教学分析系统V1.0-成绩交叉分析”模块来向读者做一个详细地介绍。

二、系统模块的设计

1. 数据库表的建立

系统已经有一个数据库:YangYiDB,包括三张表:课程、成绩、学生。各表之间的关系图见图3。

2.系统模块的实现

第一步、启动VS2005,新建一个架构文件。

a.在解决方案资源管理器中,右击项目名,指向“添加”,然后单击“添加新项”。

b.在“添加新项”对话框的“类别”区域,展开文件夹,然后选择“数据”。

c.在“模板”区域选择“数据集”。

d.修改默认名称 DataSetCross.xsd。

这就创建了一个新的架构文件(DataSetCross.xsd),以后将用它来生成强类型数据集。该架构文件将显示在数据集设计器中。

e.从“工具箱”中拖放一个DataTable,放入DataSetCross.xsd中,创建几个字段:名字、课程名、成绩(见图4)。

第二步、新建一个创建新报表。

a.指向“添加”,单击“添加新项”。

b.在“添加新项”对话框中,从“模板”区域选择Crystal Report,将报表命名为CrystalReport006,同时根据前面的数据集DataSetCross.xsd设计交叉表(如图5)。

第三步、新建窗体文件,命名为“Form012”。

a.拖放控件tableLayoutPanel1、groupBox2、checkBox3、checkBox2、checkBox1、button1、crystalReportViewer1、statusStrip1,布局和设置如图6所示。

第四步、代码实现。

a.在Form012类前面添加语句

using System.Data.OleDb;

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.Shared。

b.给Form012类添加类字段

tempDataView:

private DataView tempDataView; //

c.自定义私有方法myDataView(),实现连接数据库,读取前面所提的三张表的名字、课程名、成绩字段,返回一个内存中的数据视图,代码如下:

private DataView myDataView( )

{

DataSet tempDataSet = new DataSet( );

string connString = ″Provider=SQLOLEDB;Data Source=.;User ID=sa;Initial Catalog=Test″;

OleDbConnection myOleDbConnection = new OleDbConnection(connString);

string sqlString = ″select 名字,课程名,成绩 from 学生,课程,成绩 where 学生.学号=成绩.学号and课程.课程号=成绩.课程号″;

OleDbDataAdapter myOleDbDataAdapter = new OleDbDataAdapter(sqlString, myOleDbConnection);

myOleDbDataAdapter.Fill(tempDataSet, ″学生课程成绩″);

return tempDataSet.Tables[″学生课程成绩″].DefaultView;

}

d.在Form012_Load事件中添加tempDataView=myDataView();来调用上述方法。

e.双击“输出报表”按钮,在button1_Click事件中加入如下代码:

CrystalReport006 myCrystalReport006 = new CrystalReport006( );

DataSetCross myDataSetCross = new DataSetCross( );

//产生动态条件,存入字符ChooseStr中

string ChooseStr = ″″;

if (checkBox1.Checked) ChooseStr = ChooseStr + ″课程名=’″ + checkBox1.Text + ″’″;

if (checkBox2.Checked) ChooseStr = ChooseStr + ″ or ″ + ″课程名=’″ + checkBox2.Text + ″’″;

if (checkBox3.Checked) ChooseStr = ChooseStr + ″ or ″ + ″课程名=’″ + checkBox3.Text + ″’″;

if (ChooseStr == ″″)

{ MessageBox.Show(″请选择要显示的字段″); return; }

if (ChooseStr.Substring(0, 4) == ″ or ″)

ChooseStr = ChooseStr.Substring (4, ChooseStr.Length - 4);

//产生视图tempDataView,对应存入架构文件myDataSetCross中

tempDataView.RowFilter = ChooseStr;

foreach (DataRowView drw in tempDataView)

{

DataRow dr = myDataSetCross.Tables[″DataTableCross″].NewRow();

dr = drw[″名字″]; dr = drw[″课程名″]; dr = drw[″成绩″];

myDataSetCross.Tables[″DataTableCross″].Rows.Add(dr);

}

//刷新crystalReportViewer1,并将crystalReportViewer1显示出新的数据集结果

crystalReportViewer1.Refresh();

myCrystalReport006.SetDataSource(myDataSetCross.Tables[″DataTableCross″]);

crystalReportViewer1.ReportSource = myCrystalReport006;

第五步、程序运行,查看结果。

a.任意选择各种课程;

b.点击“输出报表”按钮;

c.重复a和b,可以看到有不同的交叉表输出。

结束语

用C#实现动态地水晶报表交叉表的实现方式,在许多项目中都将会用到,掌握其中的细节将会对软件开发者带来很大的帮助。

参考文献:

水晶报表范文第8篇

关键词 .net环境 报表应用与管理 工作效率 优化与改进 现实意义

中图分类号:TP3 文献标识码:A

0前言

目前.net环境下报表的应用研究主要是针对水晶报表设计与实现来进行,因此本次研究工作选取了水晶报表作为研究对象,依据.net环境下对报表的需求来深入分析报表设计与实现,以此来推动相关研究工作进一步发展,提高实际报表管理与应用工作效率做出应有的贡献。

1 基于.net环境下报表应用需求研究

互联网是一个开放性平台,人们可以随时随地通过访问网络来搜集感兴趣的信息以满足工作需要,在很大程度上提高了实际工作效率,促进了生活工作方式变革。.net环境下报表的应用与管理将不再局限于某一个领域,而是通过网络信息资源的共享与交流来满足全面具体的应用需求。因此针对报表的应用与开发对满足工作需要,推进社会经济进一步发展具有重要的促进作用和现实意义。报表开发与应用也将会朝着多元化发展,需要在实际工作中不断研发与改进,以提高报表的实用性。因此基于.net环境下报表开发与应用需要投入较多的精力来给予支持,以确保报表能够紧随时展要求,为社会输出更多优质服务。

2 水晶报表概述

2.1水晶报表含义

Crystal Reports(水晶报表)是一款具有良好实用性的商务智能应用软件,主要用于日常工作中设计以及产生报表。水晶报表是目前世界范围内最专业、功能最全、操作性较高的报表应用管理系统,除了能够满足日常企事业单位生产所需之外,还能够与绝大多数主流应用工具实现无缝对接,从而延伸了报表的使用范围,进一步推动了社会无纸化办公进程,有力的促进了相关行业发展,具有重要的推动作用与现实意义。

2.2水晶报表特点

2.2.1操作简便、快捷

水晶报表相较于传统报表应用与管理方式具有明显的优势,在报表数据计算与整理过程中不需要将繁杂的数据进行捆绑操作,从而有效节约了工作时间,很大程度上提高了工作效率。同时报表在进行编辑过程中可以通过简单操作就能够轻松实现,降低了报表操作与应用难度,使得报表能够成为日常办公软件之一得到有效推广使用。目前水晶报表应用已经进入了一个高峰阶段,所带来的社会效益与经济收益在很大程度上推动了社会经济进一步发展,日常办公无纸化进程进一步加快,实现了经济社会可持续发展的总体社会目标。

2.2.2水晶报表程序控制能够满足实际所需

水晶报表程序控制程序目前主要有拉(PULL)模式和推(OUSH)模式,根据实际工作需要选取科学合理的报表控制模式不仅能够有效节约工作时间,还能够在很大程度上促进报表得到优化和完善,具有较高的使用价值。在.net环境下,通过使用水晶报表不同程序控制模式可以有效降低数据库连接消耗程度,提高系统自身的运行性能具有重要的影响作用。随着计算机不断普及应用,数据库系统也将随之普及,因此为了能够有效提高数据库系统运行效率与使用价值,就需要针对报表连接消耗问题进行有效解决,而实际研究也证实了水晶报表程序控制模式确实能够实现降低连接消耗的目的。

3 .net环境下报表应用研究

3.1利用向导制作报表

利用向导来制作报表是实际工作中利用程度最高、应用范围最广泛的报表生成方法,其主要是通过向导的引导来完成所需要报表的设计与生成工作。具体步骤为:根据向导指引新建一个网站来添加报表,之后利用已经存在的数据源来进行报表内容的进一步加工工作。在报表设计器中通过选取合适的报表以及相应数据来进行内容丰富,之后将报表进行导出,如此一来就可以生成一个简单实用、内容丰富翔实的报表。

3.2动态生成报表

由于实际工作需要,报表的应用不可能一直沿用固定报表生成模式,往往会因为实际数据变动而需要进行编辑改进,如果能够动态生成报表将会在很大程度上简化报表应用管理流程,提高工作效率。因此通过利用ReportViewer,根据实际所需报表需求来指定显示报表,自动生成Object Data Source文件,该文件会根据生成数据源时默认定义方法来获取数据库中已经存在了的数据。打开Name="DataSet1_DEPARTMENT"/>,通过重新命名Name就可以针对已有报表按照正常方式来加载数据源以及将生成的数据添加到报表之中,从而实现了对报表的动态加载与编辑,生成的报表能够符合实际动态需求,具有较高的应用价值。

4总结

综上所述,.net环境下报表的应用需要紧随时展需求,力争做到与时俱进来满足工作需要,从而改变传统办公模式,将现代化无纸化办公理念和方式运用在工作生活中,促使社会经济实现可持续发展的总体社会目标。

参考文献

[1] 孙惠娟,高瑞华.NET环境下几种报表解决方案的对比分析[J].河南财政税务高等专科学校学报,2011,12(03):90-92.

[2] 孙惠芬.基于.NET环境下的日报表系统的设计与实现[J].电脑知识与技术,2011,12(35):9143-9144.

水晶报表范文第9篇

关键词:;水晶报表

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)36-10250-02

开发应用程序时,经常需要生成报表,,如何开发出既满足用户需求,又能减少开发人员工作量的报表是开发人员普遍面临的问题。水晶报表是由Crystal Decisions 公司开发的商务智能软件,是一款优秀的专业报表开发和制作工具,Crystal Reports for Visual 是以CrystalReports9.0 为蓝本,专门为.NET平台定制的,提供了丰富的编程模型,充分利用.NET Framwork 和CRL,大大降低了开发大型,复杂的企业级报表过程的复杂度,同时它使用开放而灵活的结构,其标准类似XML,可通过Web 共享报表与信息,可提供深化图表、报表导航和文本搜索等功能。此外,导出的Excel文件格式非常完美,任何其它报表在这方面都不能与之比拟,而且并不需要安装Excel,它还为.NET 开发人员提供丰富的API,便于开发人员调用。

1 下的水晶报表设计

1.1 水晶报表数据传递模型

水晶报表数据传递模型如图1图示,其中,数据源可以是传统数据库也可以是XML文件,使用的对象DATAAdapter及Connection等来连接数据库,DataSet向下用来存储数据,同时可以直接操作XML文件,向上填充BindingSource,并用BindingSource来填充DataSource, CrystalReportViewer的功能是利用Datasource的填充的数据及指定给它的RDLC报表文件表显示报表(如图1)。

1.2 水晶报表的应用实例

本文以某高校一个教务管理系统为例介绍如何使用水晶报表。

1.2.1 创建报表模板

1) 新建基于Windows的工程WindowsApp lication1,在“解决方案管理器”中,右击项目名,在弹出的“项目”菜单中选择“添加”,打开“添加”菜单,在“添加”菜单里选择“新建顶”,打开“添加新项”对话框。

2) 在“添加新项”中选择“Crystal报表,单击“添加”,弹出 “Crystal Reports库” 对话框。在选项组“创建新Crystal Report文档”中,有3个选项:1. 使用报表向导:有对话框指导完成报表的创建,并将选择保存到报表设计器中;2. 作为空白报表:对报表不做任何设置;3. 来自于现有的报表:用目前设计好的报表作为模板,重新设计报表。

在选项组“选择专家”中包含三种不同的报表专家,可以指导完成特定类型报表的创建工作。有3个选项:1. 标准:指导如何选择数据源和连接数据库表。还可以帮助用户添加字段以及分组、统计、图表以及排序。2. 交叉表:报表中的数据作为交叉表对象显示,并指导自定义格式。3. 邮件标签:允许用户格式化报表,目的是打印在任意尺寸的邮件标签上。

3) 分别选择“使用报表向导”和“标准”选项,点击确定,“标准报表创建对话框,对话框“数据”为要创建的报表选择数据源,列表中包括如下的选项:1. 项目数据:显示当前项目的数据源列表和的数据源;2. 当前连接:显示当前连接到数据源的列表;3. 收藏夹:显示“收藏夹”列表中维护的数据源列表。4. 历史记录:显示最新5条使用过的数据源;5. 创建新连接:显示可以创建的所有数据源,取决于安装过程中选定的数据访问组件。

4) 在列表中选择“创建新连接”中选择“OLE DB(ADO)”文件夹,对话框“OLE DB(ADO)”

5) 选择“Microsoft OLE DB Provider for SQL Server”并进入下一步,将要连接的数据库信息填写到对话框中。服务器名字为“(local)”,用户名和密码分别为“sa”和“123456”,并选择要连接的数据库为JWGL。

6) 单击按钮“完成”返回到“标准报表创建向导”对话框,依次点开文件夹,找到连接的数据,并将表“stdent”添加到右边的选定列表中,将表“student”中的所有字段都选中,并添加要显示的字段列表中。下面还有两个配置的窗口,分别是分组和筛选的对话框,因为这里不需要设置,所以都直接跳到最后一步“报表样式”,可选的样式有10个,这里选择“标准”样式。创建好的报表将加载到主窗口中。

1.2.2 在工程中添加报表模板

1) 在窗体上放置一个CrystalReport Viewer 控件

2) 在程序中添加报表验证信息,在form1下自定义一个过程

Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)

Dim myTableLogonInfos As TableLogOnInfos = CrystalReportViewer1.LogOnInfo

For Each myTableLogOnInfo As TableLogOnInfo In myTableLogonInfos

myTableLogOnInfo.ConnectionInfo = myConnectionInfo

Next

End Sub

1.2.3 在form控件的load 事件下加入下面的代码

Dim dir As String

dir = System.Environment.CurrentDirectory

Dim path = dir.Substring(0, dir.LastIndexOf("\") - 3)

'MessageBox.Show(path + "Hierarchical Grouping.rpt")

Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()

CrystalReportViewer1.ReportSource = path + "CrystalReport1.rpt"

myConnectionInfo.ServerName = "(local)"

myConnectionInfo.DatabaseName = "jwgl"

myConnectionInfo.IntegratedSecurity = False

myConnectionInfo.UserID = "sa"

myConnectionInfo.Password = "123456"

'CrystalReportViewer1.LogOnInfo = myConnectionInfo

SetDBLogonForReport(myConnectionInfo)

2 总结

水晶报表在与 紧密集成后,功能强大,性能稳定,操作便捷,利用自身提供的报表设计器和 提供的丰富特性,在开发报表时可以极大地提高开发效率,减少开发人员工作量。

参考文献:

[1] 许清荣.新一代Visual Basic 2005 程序设计[M].北京:清华大学出版社,2006.

水晶报表范文第10篇

关键词:Internet信息服务器;水晶报表;应用范例;报表设计组件

中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c

1 前言

为进一步转变政府职能,推进政务公开,提高行政效能,更好地服务发展、服务基层、服务群众,江苏省新闻出版(版权)局通过建设行政服务中心,推进“一站式”服务的窗口,负责本局已进入政务大厅的61项行政许可、行政管理事项的“统一受理、统一办结、统一出证、统一告知”并提供相关政务咨询。在各事项中涉及大量回执、通知、单证、委托书、报表的打印、预览,特别是还有很多证件、报表牵扯到套打。如果在ASP中一行行写代码来实现,开发量将大大增加,开发周期也会大大加长。怎么办?通过调用Crystal Reports来实现吧。

2 简介

Crystal Reports(水晶报表)是加拿大Crystal Decisions公司出品的专业级报表分析与生成软件,它能够实现对数据的检索、分组、分析。与其他的报表创建和分析软件相比,Crystal Reports具有高稳定性、高可伸缩性以及应用平台广泛等杰出的优点。

Web报表解决方案的主要优势是免去了在终端用户计算机上安装软件的麻烦。使用此方式,Crystal Report Viewer通过Web服务器被自动发送到终端用户的Internet缓存中,并且可以显示用户想看的任何报表。

3 编程实例

下面我将用实例阐述水晶报表Web应用程序编程。

3.1 复制水晶报表安装目录下文件到虚拟目录

首先必须在Web服务器上成功安装了Crystal Reports,然后在IIS中创建一个应用程序,并且把它指向网络上的一个虚拟目录,假设为xzsp。然后,应当从crystal reports的安装路径中复制以下9个文件到该虚拟目录下的相应子目录下(比如xzsp\rpt目录下)。假设你的crystal reports安装在默认路径下,那么这些文件会在C:\Program Files\Crystal Decisions\Crystal Reports 9\Samples\chs\Code\Web\Report Designer Component中。

3.2 从aspxmps8代码包中提取文件

从/communityCS/FilesAndUpdates/aspxmps8.exe.asp下载aspxmps8.exe。该程序中包含了许多示例代码,我们需要的是其中两个文件:AlwaysRequiredSteps.asp和MoreRequiredSteps.asp,把这两个文件也复制到IIS应用程序的虚拟目录xzsp下。

好了,我们已经坐享其成地挖了不少现成的代码,现在要自己编写一些代码了。在虚拟目录中创建一个名为rptcrl.asp的文件, 代码如下:

3.3 编写嵌入RDC(水晶报表设计组件)的配置文件

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<% response.expires=0 %>

<!--#include file="../inc/dbconn.asp"-->

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>报表显示</title>

</head>

<%

reportname=request.QueryString("rpt")

ccom=request.querystring("com")

csel=request.QueryString("sel")

server.scripttimeout=180

%>

<!--#include file="AlwaysRequiredSteps.asp"-->

<%

session("orpt").reportcomments=ccom

session("orpt").recordselectionformula=csel

%>

<!--#include file="morerequiredsteps.asp"-->

<!--#include file="smartvieweractivex.asp"-->

<body>

</body>

</html>

在程序中包含了3个asp文件:AlwaysRequiredSteps.asp、MoreRequiredSteps.asp和SmartViewerActivex.asp,它们的作用已在前面说明了,这里不再赘述,想深入理解可以打开这些文件,文件中会有相应地注释。

3.4 编写报表调用主文件

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>业务管理(出证管理)</title>

</head>

<body>

<!--#include file="menu.asp"-->

<%

pageno=request.querystring("page")

ID=request.querystring("ID")

'set rs=server.createobject("adodb.recordset")

'以下为从相应视图中抽取指定记录

sql="Select * From proc_bk_lxxzyz_view Where ID="&ID&" Order By RecoTime Desc"

rs.open sql,conn,3,3

'以下为指定记录打印序号保存

seltrans="{proc_bk_lxxzyz_view.ID}="&id

rs.close()

set rs=nothing

%>

<table class="SxTable1" cellspacing="1" cellpadding="2" align="center">

<tr class="SxTd2">

<td align="center">业务管理(出证管理)</td>

</tr>

<tr class="SxTd1">

<td> <a href="http://busimanage.asp?ProcID=<%=ProcID%>&page=<%=pageno%>">返回</a></td>

</tr>

<tr class="SxTd3"><td>1.政务大厅出证

<a href="http://../../rpt/rptcrl.asp?rpt=lxxzyz1.rpt&sel=<%=seltrans%>" target="_blank"><u>连续性内部资料出版物准印证预览一</u></a>(21.5*28.7) <a href="http://../../rpt/rptcrl.asp?rpt=lxxzyz2.rpt&sel=<%=seltrans%>" target="_blank"><u>连续性内部资料出版物准印证预览二</u></a>(21.5*28.7)</td>

</tr>

<tr>

<td class="SxTd4"></td>

</tr>

</table>

</body>

</html>

注意这段代码:<a href="http://../../rpt/rptcrl.asp?rpt=lxxzyz1.rpt&sel=<%=seltrans%>" target="_blank">,rpt=lxxzyz1.rpt是一个连续性内部资料出版物准印证报表文件,查询条件放在了seltrans变量中。显示效果见图1、图2。

图1

图2

4 结束语

水晶报表几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流,比如这样的饼图(见图3):

图3

使用Web界面,程序员不需要在客户端安装Crystal Reports软件。通过将水晶报表的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。而且,程序员可以把多个简单的Web页面集成在一起,创建一个可以显示不同类型水晶报表的普通报表界面。

这里着重介绍了在ASP中如何运用Crystal Reports。如何在Crystal Reports中创建各类报表那又是另外一项需要深入学习的技术了。

参考文献:

[1]Mattew Strebe,Charles Perkins.Internet Informatin Server Learning Giude[M].北京:电子工业出版社,1999(7):120-135.

[2]Cate McCoy,Gord Maric.水晶报表Crystal Reports 9从入门到精通[M].北京:电子工业出版社,2003(6):434-436.

[3]张景涛,ASP程序设计及应用[M].中国水电水利出版社,2005(3):178-181.

收稿日期:2007-12-25

上一篇:合并财务报表范文 下一篇:企业财务报表范文