水晶报表Word下载.docx
《水晶报表Word下载.docx》由会员分享,可在线阅读,更多相关《水晶报表Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。
但是他不提供打印功能,你不得不调用游览器的打印功能。
VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。
为了避免这个,你不是不在(好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持)
默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在
让我们感受一下----在A中使用一个现成的水晶报表文件
让我们先感受一下在WebForm中使用水晶报表的感觉。
1)从WebForm工具栏中拖动水晶报表查看器控件(CrystalReportViewer)至.aspx页面中。
2)调出水晶报表查看器控件的属性窗口
3)点击[...]按钮查看"
DataBinding"
属性,并弹出了DataBinding窗口。
[page]
4)
从左边的"
Bindable属性”区中选择“ReportSource”
5)选中"
自定义绑定表达式"
单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:
"
C:
\\ProgramFiles\\MicrosoftVisualStudio.NET\\CrystalReports\\Samples\\Reports\\GeneralBusiness\\WorldSalesReport.rpt"
,然后”确定“
注意:
文件”WorldSalesReport.rpt“文件是在VS.Net安装时创建的。
如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。
上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中:
<%@RegisterTagPrefix="
cr"
Namespace="
CrystalDecisions.Web"
Assembly="
%>
以及:
<CR:
CRYSTALREPORTVIEWER>
id="
CrystalReportViewer1"
runat="
server"
Width="
350px"
Height="
50px"
ReportSource='
<%#"
%>'
>
</CR:
注意:
在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的,它是:
ReportSource="
<%#C:
\xxxxx\xxx.rpt%>"
这样是错误的,会出现错误信息,有两处错误:
∙DataBind中要有双引号,因此外部只能用单引号
∙目录分隔符号不能使用"
\"
必须使用"
\\"
必须按照使用本文介绍的格式来手动修改,这也算是VS.Net的一个Bug吧。
6)在Page_Load方法中调用DataBind方法。
(代码为VB.Net)
PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)
DataBind()
EndSub
7)保存并编译你的页面。
现在,你就有一个内嵌水晶报表的WebForm页面了。
实际开发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使User用户有可写的权限。
飞刀我发现.Net系统自已给出的解决方法是没有用的,也可能是我使用的是Windows.Net操作系统的原因。
使用Pull模式
我们将通过下面的这些步骤来通过Pull模式来执行水晶报表
1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。
2.拖放一个CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件。
3.在代码中调用DataBind方法。
创建.rpt文件:
1)在右击”解决方案游览器“,在弹出的菜单中选择”添加“--”添加新项“-->
”CrystalReport”
2)在”CrystalReport库”中选择”作为空白报表“单选按钮,最后单击“确定“。
3)这里将弹出水晶报表设计器。
4)右击报表中的”详细资料区”,选择“数据库”->
“添加/删除数据库..."
5)在弹出的”数据库专家“中,扩展”OLEDB(ADO)“选项,此时会弹出另外一个”OLEDB(ADO)“窗口。
6)在"
OLEDB(ADO)"
弹出窗口中,选择"
MicrosoftOLEDBProviderforSQLServer"
然后"
Next"
7)指定连接的信息
服务器:
ASPCN(您的机器是什么名字就写什么)
用户ID:
sa
密码:
数据库:
Pubs
8)单击”Next“,最后单击”Finish“按钮。
9)这时你就能在”数据库专家“窗口中看到我们选择的数据库。
10)扩展”Pubs“数据库,扩展”表“,选择”Stores“表并将其加到”选定的表“区中,单击”OK"
按钮。
11)现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表,以及表中的字段。
12)拖放需要的字段进入报表的”详细资料“区。
字段名将会自动出现在”页眉“区。
如果你想修改头部文字,则可以右击”页眉“区中的文字,选择”编辑文本对象“选项并进行编辑。
13)保存,这样我们就有了一个水晶报表文件。
创建CrystalReportViewer控件
14)回到前面的WebForm中,拖放一个CrystalReportViewer控件到页面中去。
15)调出CrystalReportViewer控件的属性窗口,选择“DataBindings"
区点击[...]
16)”CrystalReportViewer数据绑定窗口”中,在右边的“可绑定属性”中选择”ReportSource“,并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。
17)此时你能够从CrystalReportViewer控件中看到使用一些虚拟数据组成的报表文件的预览。
在上面的例子中,CrystalReportViewer可以在设计时直接调用真实的数据,因为此时数据已经保存。
在这种情况下,设计时当没有保存数据时,他是不能显示数据的。
取而代这的是显示一些虚拟的数据,只有在执行时才会选取真实的数据。
CodeBehind程序设计
18)在Page_Load方法中调用DataBind方法。
执行你的程序
19)创建并运行你的程序!
您现在就可以直接在Web页面中使用水晶报表内置的一些功能,如页面导航,缩放等。
使用PUSH模式
我们采用下面的几步使用Push模式执行水晶报表:
1.设计一个DataSet
2.创建一个.rpt文件同时将其指定给上一步建立的DataSet。
3.在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
4.在代码中访问数据库并把数据存入DataSet
5.调用DataBind方法。
设计一个DataSet
1)右击“解决方案浏览器”,选择“添加”--“添加新项”-->
“数据集”
2)从“服务器资源管理器”中的“SQLServer”中拖放“Stores”表(位于PUBS数据库中)。
3)此时在数据集中就会有一个Stores表的结构图。
-.xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。
创建.rpt文件:
4)使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5)建立.rpt文件之后,右击“详细资料”-->
添加/删除数据库“
6)在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--"
DataSet1“,选择”Stores“表。
7)将”Stores"
表添加到“选定的表”中,点击“OK”
8)使用PULL模式下的方法,建立一个WebForm
建立一个CrystalReportViewer控件
9)建立一个CrystalReportViewer控件,并设定其属性,此处与PULL模式下是一致的。
CodeBehind代码:
10)在Page_Load方法中使用下面的子函数:
VB.Net代码:
SubBindReport()
DimmyConnectionAsNewSqlClient.SqlConnection()
myConnection.ConnectionString="
server=(local)\NetSDK;
database=pubs;
Trusted_Connection=yes"
DimMyCommandAsNewSqlClient.SqlCommand()[page]
MyCommand.Connection=myConnection
MyCommand.CommandText="
Select*fromStores"
MyCommand.CommandType=CommandType.Text
DimMyDAAsNewSqlClient.SqlDataAdapter()
MyDA.SelectCommand=MyCommand
DimmyDSAsNewDataset1()
'
这就是我们在设计模式上使用的DataSet
MyDA.Fill(myDS,"
Stores"
)
你不得不使用与你前面DataSet相同名字。
DimoRptAsNewCrystalReport1()
水晶报表绑定
oRpt.SetDataSource(myDS)
设定水晶报表的ReportSource
CrystalReportViewer1.ReportSource=oRpt
EndSub
C#代码:
privatevoidBindReport()
{
stringstrProvider="
Server=(local);
DataBase=pubs;
UID=sa;
PWD="
;
CrystalReport1oCR=newCrystalReport1();
Dataset1ds=newDataset1();
SqlConnectionMyConn=newSqlConnection(strProvider);
MyConn.Open();
stringstrSel="
SqlDataAdapterMyAdapter=newSqlDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,"
stores"
);
oCR.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource=oCR;
}
在上面的代码中,你得注意一下oRpt是"
StronglyTyped"
的报表文件。
如果你需要使用"
UnTyped"
报表,你得使用ReportDocument对象,然后再调用报表文件。
运行你的程序。
11)运行你的程序
将报表文件导出成为其它格式
你能够将报表文件导出成为下列格式:
1.PDF(PortableDocumentFormat)
2.DOC(MSWordDocument)
3.XLS(MSExcelSpreadsheet)
4.HTML(HyperTextMarkupLanguage–3.2or4.0compliant)
5.RTF(RichTextFormat)
使用Pull模式导出报表
当导出使用Pull模式创建的文件时,水晶报表准确地打开所需要的数据,下面是执行导出功能的代码:
C#代码:
VB.Net代码:
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimmyReportAsCrystalReport1=NewCrystalReport1()
'
注意:
这里我们建立一个strong-typed的水晶报表实例。
DimDiskOptsAsCrystalDecisions.Shared.DiskFileDestinationOptions=NewCrystalDecisions.Shared.DiskFileDestinationOptions()
myReport.ExportOptions.ExportDestinationType=CrystalDecisions.[Shared].ExportDestinationType.DiskFile
导出成为其它文件时也需要这个选项
如MicrosoftExchange,MAPI等.
myReport.ExportOptions.ExportFormatType=CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat
这里我们导出成为.pdf格式文件,你也能选择上面的其它类型文件
DiskOpts.DiskFileName="
c:
\Output.pdf"
如果你不指定确切的目录,那么文件就会保存到[Windows]\System32目录中去了
myReport.ExportOptions.DestinationOptions=DiskOpts
水晶报表文件不包含直接的FileName属性,因此你不能直接指定保存的文件名
所以你不得不使用DiskFileDestinationOptions对象,设置它的DiskFileName属性
为你想要的路径,最后将水晶报表的DestinationsOptions属性指定为上面的DiskFileDestinationOption
myReport.Export()
上面的代码将完成导出工作。
EndSub
使用PUSH模式导出水晶报表
当导出的报表是由PUSH模式建立的时,第一步就是通过编程建立连接并组装DataSet,设置报表的的SetDataSource属性。
再下面的步骤就有Pull模式一样的了。
ASP.NET中利用CrystalReport创建图表
在很多的应用程序中,报表是不可缺少的,一张好的报表能直观地让人把握数据的情况,方便决策。
在这篇文章中,我们将以一个三层结构的程序为例,介绍如何使用crystalreport,来制作一份报表,其中介绍了不少和水晶报表的技巧。
在这个例子中,我们设想的应用要为一个销售部门制作一份报表,管理者可以查看某段时间之内的销售情况,以列表或者折线图的形式反映出销售的趋势。
我们将使用SQLServer2000做为数据库,使用VB.NET编写中间层逻辑层,而前端的表示层使用C#。
我们先来看下数据库的结构。
其中,tbitem表中存放的是每张订单中所订购的货品,tbsales存放的是每张订单,tblsalesperson是销售员表,存放该出版社的每位销售员。
接下来,使用SQLServer2000来创建这些表。
表的结构如下所示:
CREATETABLE[dbo].[tblItem](
[ItemId][int]NOTNULL,
[Description][varchar](50)NOTNULL
)ON[PRIMARY]
CREATETABLE[dbo].[tblSalesPerson](
[SalesPersonId][int]NOTNULL,
[UserName][varchar](50)NOTNULL,
[Password][varchar](30)NOTNULL
)ON[PRIMARY]
CREATETABLE[dbo].[tblSales](
[SaleId][int]IDENTITY(1,1)NOTNULL,
[SaleDate][datetime]NOTNULL,
[Amount][int]NOTNULL
并且用以下的代码创建表之间的约束关系。
ALTERTABLEtblItem
ADDCONSTRAINTPK_ItemId
PRIMARYKEY(ItemId)
GO
ALTERTABLEtblSalesPerson
ADDCONSTRAINTPK_SalesPersonId
PRIMARYKEY(SalesPersonId)
ALTERTABLEtblSales
ADDCONSTRAINTFK_ItemId
FOREIGNKEY(ItemId)REFERENCEStblItem(ItemId)
ADDCONSTRAINTFK_SalesPersonId
FOREIGNKEY(SalesPersonId)REFERENCEStblSalesPerson(SalesPersonId)
GO
创建中间逻辑层
在中间逻辑层组件中,我们为每一张表都创建两个类。
比如,对于tblItems表,创建item和items类。
Item类中记录每件销售的货品的详细情况,而items表则记录所有销售的货品并且有增加货品的方法。
这样,就存在下面的六个类:
ItemandItems
SalesPersonandSalesPersons
SaleandSales
接下来,看一下每个类中的属性:
Item类
包括如下属性
ItemId(货品id编号)
Description(货品的描述)
Items
有一个方法,将根据item的编号返回一个item对象
PublicFunctionGetAllItems()AsCollections.ArrayList
SalesPerson
该类有以下三个属性:
SalesPersonId(销售员编号)
Name(姓名)
Password(密码)
SalesPersons
有一个方法,根据销售员登陆时输入的用户名和密码,在数据库中,验证销售员的登陆是否正确,如果正确,则返回零。
PublicFunctionValidateUser(strUserNameasString,strPasswordasString)AsInteger