vs水晶.docx

上传人:b****5 文档编号:5043437 上传时间:2022-12-12 格式:DOCX 页数:13 大小:25.90KB
下载 相关 举报
vs水晶.docx_第1页
第1页 / 共13页
vs水晶.docx_第2页
第2页 / 共13页
vs水晶.docx_第3页
第3页 / 共13页
vs水晶.docx_第4页
第4页 / 共13页
vs水晶.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

vs水晶.docx

《vs水晶.docx》由会员分享,可在线阅读,更多相关《vs水晶.docx(13页珍藏版)》请在冰豆网上搜索。

vs水晶.docx

vs水晶

2、C#.Net的WinForm中使用水晶报表

1)在使用自带的水晶报表时,请注册,否则只能使用30次

2)使用CrystalReportViewer进行预览

CrystalReportViewer控件允许在应用程序中查看CrystalReport。

ReportSource属性用于设置要查看哪个报表。

该属性设置之后,报表显示在查看器中。

报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。

(1)打开“工具箱”,并将一个CrystalReportViewer拖到窗体上,我们命名为rptVew。

(2)通过拖放操作将Windows窗体查看器调整到希望的大小并将其移动到所需位置。

(3)当运行应用程序时,报表将显示在查看器中。

3)创建新报表

(1)指向“添加”,单击“添加新项”。

(2)在“添加新项”对话框中,从“模板”区域选择CrystalReport,将报表命名为rptClient,单击“打开”。

(3)在CrystalReport库中,选择下列选项之一:

A.使用报表专家->指导您完成报表的创建过程,并将您的选择添加到CrystalReportDesigner。

B.作为空白报表->打开CrystalReportDesigner。

C.来自于现有的报表->创建新报表,它与指定的另一报表设计相同。

注意CrystalReport库包含许多专家,可以指导您完成数个特定类型报表的创建工作。

您可能希望使用专家来创建最初的报表,以确定哪种报表构造方法适合您的需要。

(4)单击“确定”按钮。

如果选择使用“报表专家”,便会出现“报表专家”对话框,并带有数据资源管理器。

为每个文件夹选择所需数据,完成“报表专家”选项卡界面上的操作,然后单击“完成”来访问CrystalReportDesigner和您的报表。

(5)是否需要动态设置数据源?

CrystalReports通过数据库驱动程序与数据库连接。

每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。

拉和推模型,为了向开发人员提供最灵活的数据访问方法,CrystalReports数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。

拉模型pull:

在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。

使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由CrystalReports本身处理,不需要开发人员编写代码。

如果在运行时无须编写任何特殊代码,则使用拉模型。

推模型push:

相反,推模型需要开发人员编写代码以连接到数据库,执行SQL命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。

该方法使您可以将连接共享置入应用程序中,并在CrystalReports收到数据之前先将数据筛选出来。

4)从ADO.NET数据集制作报表

从数据库创建数据集对象

(1)在项目中新建一个架构文件:

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

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

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

接受默认名称Dataset1.xsd。

这就创建了一个新的架构文件(Dataset1.xsd),以后将用它来生成强类型数据集。

该架构文件将显示在ADO.NET数据集设计器中。

(2)指定数据库位置:

在服务器资源管理器中,右击“数据连接”并选择“添加连接”。

在“数据链接属性”对话框中,单击“提供程序”选项卡,然后选择一个提供程序(例如MicrosoftOLEDBProviderforSQLServer)。

单击“连接”选项卡,然后指定您的数据库所在位置。

在所需位置输入服务器和登录信息。

单击“确定”按钮。

此时,您的数据库及其表和字段就出现在服务器资源管理器的“数据连接”节点下面。

(3)在解决方案资源管理器中,双击Dataset1.xsd(如果它尚不是活动视图)。

Dataset1.xsd现在应显示在“数据集”选项卡中。

(4)若要为数据集建立架构,请将需要的表从服务器资源管理器中拖动到Dataset1.xsd的“数据集”选项卡上。

(5)单击“保存Dataset1.xsd”来保存“Dataset1.xsd”文件。

(6)在“生成”菜单上,单击“生成”为项目生成数据集对象。

ADO.NET数据集对象提供数据的描述,从它可以向Crystalreport添加表。

使用CrystalReportDesigner中的“数据库专家”从ADO.NET数据集对象添加表。

请在使用“报表专家”创建新报表时调用“数据库专家”。

或者,要从一个已经使用ADO.NET建立好的报表中访问“数据库专家”,请在ReportDesigner中右击,指向“数据库”,然后单击“添加/删除数据库”。

将报表连接到ADO.NET数据集对象

(1)在“数据库专家”中,展开“项目数据”文件夹。

(2)展开“ADO.NET数据集”文件夹。

(3)选择所需数据集对象。

例如,如果当时使用的是从项目“WindowsApplication1”的架构文件“Dataset1.xsd”中生成的数据集对象,则应该选择“WindowsApplication1.Dataset1”。

选择要向报表中添加的表,和使用其他数据源一样。

5)动态改变数据源的代码

DataSetdsdataSet=newDataSet();

rptClient()oRpt=newrptClient();//已建立的报表rptClient

OleDbDataAdapterda=newOleDbDataAdapter("select*fromTableName",conn);

da.Fill(dsdataSet,"TableName");

//使用“报表引擎”对象模型将填充的数据集,传递给报表

oRpt.SetDataSource(dsdataSet.Tables(0));

//将带有数据的报表对象绑定到Windows窗体查看器,rptVew(CrystalReportViewer控件)

rptVew.ReportSource=oRpt;

注意FillDataSet方法可连接到指定的数据库,提取数据,然后断开数据库连接。

如果您希望将数据库中的多个表添加到报表中,请使用SQLJOIN语句将这些表联接在一起;然后在FillDataSet方法中指定一个结果表。

6)创建主从报表

在报表中,有许多报表是主从表结构,比如订单与订单商品明细,订单是一个表中的一条记录,而分录是另一个表中的多条记录,两个表通过一个字段关联起来,这种报表可利用其分组功能实现。

(1)新建一个工程

(2)往FORM1中添加一个CrystalReportViewer控件

(3)在服务噐资源管理器中连接到SQLSERVER2000上的Northwind数据库

(4)添加一个数据集Dataset1,将服务器资源管理器中的Orders和OrderDetails加入到数据集中。

(5)添加一个水晶报表,使用报表专家,在项目数据中选择“ADO.NET数据集”,插入表Orders和OrderDetails,“链接”中是关联字段的链接,在“字段”中选择要显示的主表和明细表的字段,组中选择分组依据为Orders表OrdersID字段,总计,图表,选择(可进行筛选),样式(可设置报表标题),可自行设置。

设置完后,点击完成。

(6)在报表设计器中调整需要显示的字段的位置、宽度等。

(7)在窗口中添加代码。

publicPrintForm()

{

InitializeComponent();

OleDbConnectionconn=newOleDbConnection("datasource=PMSERVER;initialcatalog=Northwind;userid=sa;password=sa");

Dataset1()ds=newDataset1();

OleDbDataAdapterda1=newOleDbDataAdapter("select*fromorders",conn);

da1.Fill(ds,"orders");

OleDbDataAdapterda2=newOleDbDataAdapter("select*from[OrderDetails]",conn);

da2.Fill(ds,"OrderDetails");

CrystalReport1oCR=newCrystalReport1();

oCR.SetDataSource(ds);

this.crystalReportViewer1.ReportSource=oCR;

}

(8)运行程序

3、水晶报表登陆失败

usingCrystalDecisions.Shared;

//声明所需变量。

TableLogOnInfologOnInfo=newTableLogOnInfo();

//对报表中的每个表依次循环。

for(inti=0;i

{

//设置当前表的连接信息。

logOnInfo.ConnectionInfo.ServerName=serverNameTxt.Text;

logOnInfo.ConnectionInfo.DatabaseName=dbNameTxt.Text;

logOnInfo.ConnectionInfo.UserID=userNameTxt.Text;

logOnInfo.ConnectionInfo.Password=passwordTxt.Text;

Report.Database.Tables[i].ApplyLogOnInfo(logOnInfo);

}

注意受密码保护的MicrosoftAccess和Paradox等PC数据库也使用该方法,但LogOnInfo.ServerName为数据文件的路径,LogOnInfo.DatabaseName要保留为空。

TableLogOnInfo是属于CrystalDecisions.Shared命名空间的成员。

要添加引用:

usingCrystalDecisions.Shared;。

4、水晶报表应用程序的发布

1)安装部署

安装部署时,把水晶报表的msm打进去,注册到服务器,要部署使用CrystalReportsforVisualStudio.NET2003的程序,首先,找到以下7个文件(你可以'C:

\ProgramFiles\CommonFiles\MergeModules'文件夹下找到):

Crystal_Database_Access2003.msm

Crystal_Database_Access2003_chs.msm

Crystal_Managed2003.msm

Crystal_Managed2003_chs.msm

Crystal_regwiz2003.msm

VC_User_CRT71_RTL_X86_---.msm

VC_User_STL71_RTL_X86_---.msm

接着,在解决方案资源管理器中,右击安装项目,指向“添加”,然后单击“合并模块”。

在“添加模块”对话框中,选择上面的7个要添加到安装项目的合并模块,然后单击“打开”。

还有,打开解决方案-->右键点击Crystal_regwiz2003.msm的属性,在“MergeMouduleProperties”里的“LicenseKey”填入:

AAP5GKS0000GDE100DS(这个是你生成CrystalReport是用到的注册号的密码!

2)部署水晶报表时的常见问题及解决方案

(1)载入报表时报错

问题出在报表发布上。

发布使用水晶报表的项目需要包含三种组件:

报表(*.rpt)、模块(*.msm)、运行库(*.msm),这些模块文件是在C:

\ProgramFiles\CommonFiles\MergeModules\目录里面。

A.报表(*.rpt):

用户编程时创建的水晶报表文件。

B.模块(*.msm):

Managed.msm该模块包含了CRforVS.NET的管理模块,如CrystalDecisions、CrystalReports.Engine.DLL、CrystalDecisions.Web.DLL,和CrystalDecisions.Windows.Forms.DLL……

Managed_chs.msm是该模块的中文版语言支持。

Database_Access.msm该模块包含了数据库的驱动、与不同数据库的联结、报表导出为RTF和HTML格式的文档和图表组件。

Database_Access_chs.msm是此模块的中文版语言支持。

Regwiz.msm注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过

C:

运行库(*.msm):

如果报表文件使用了ADO.NET的dataset数据集对象,那么VC_CRT.msm和VC_STL.msm模块也必须包含在安装工程中。

而且这两个模块的文件安装属性的\ModuleRetargetableFolder\项必须修改成为系统目录。

在VS.NET安装工程中,系统检测出来的依赖项只有dotNETFXRedist_x86_chs.msm和Managed.msm这两个模块,其他的模块我们需要手动加入。

(2)部署到Windows98/ME时,出错:

\LoadReportFailed\

这是因为查询引擎DLL(CRQE.dll)在客户计算机上没有正确注册。

要解决这个问题,可以在客户计算机上手动注册CRQE.dll,使用下面的命令:

regsvr32\C:

\programfiles\commonfiles\CrystalDecisions\1.0\bin\CRQE.dll\

如果CRQE.dll没有成功注册,并且问题继续存在,在客户计算机上检查ATL.dll的版本。

ATL.dllforWindows98/ME正确的版本是3.0.8449。

通过使用下面三种方法中的任意一种方法,可以找到并注册正确版本的ATL.dll。

A.在客户计算机上装IE6.0。

B.在客户计算机上,手动复制和注册ATL.dll,然后运行用于CrystalReports分发的安装包。

C.将ATL.msm合并模块添加到安装工程,ATL.msm是VisualStudioinstaller1.1的一部分,可以去微软的网站添加办法同上。

(3)在Win98的客户端运行提示\该字段名未知\

报表在Win2000的客户端一切正常,在Win98的客户端运行提示\该字段名未知\?

是因为报表使用到的sqlserver数据库中的字段名为中文的缘故,将其字段名改名为英文字段名。

(4)分发到客户机时“查询引擎出错”

“安装项目”要包含下列合并模块:

VC_CRT.msm,VC_STL.msm;此外,确保Msvcr70.dll和Msvcp70.dll在客户计算机的“系统目录”里。

(5)loadcrpe32.dllfailed

下面是cr9net_deployment.pdf说明中的部署CrystalReport9的步骤:

打开Windows应用程序。

在解决方案资源管理器中,右击Windows应用程序解决方案,指向“添加”,然后单击“新建项目”。

在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。

单击“确定”按钮。

在解决方案资源管理中,右击安装项目,指向“添加”,然后单击“项目输出”。

在“添加项目输出组”中,选择“主输出”,然后单击“确定”。

将自动添加所有依赖项,如dotnetfxredist_x86_enu.msm和dotnetcrystalreports.msm。

需要将dotnetcrystalreports.msm排除在项目之外,在解决方案资源管理器中右击这个模块的右键,选择“排除”。

在解决方案资源管理器中,右击安装项目,指向“添加”,然后单击“合并模块”。

在“添加模块”对话框中,选择下列要添加到安装项目的合并模块,然后单击“打开”:

reportengine.msm,crnetruntime.msm,license.msm

mapping.msm(可选,当在报表中使用了geographicmaps时)

VC_CRT.msm、VC_STL.msm(如果您部署的Windows应用程序使用ADO.NET数据集,则还需要包括VC_CRT和VC_STL合并模块)

在解决方案资源管理器中,右击license.msm文件,然后选择“属性”。

在“属性”窗口中,展开MergeModuleProperties,然后在“许可证密钥”属性框中输入一个有效的许可证密钥。

注意每当部署CrystalReports应用程序时,必须提供许可证密钥。

从“生成”菜单中,选择“生成解决方案”以生成应用程序。

(6)在ASP.NET程序中加载报表时,出错:

\LoadReportFailed\

确保ASPNET本地用户对报表所在的文件夹有“完全控制”的权限。

(7)部署.NET9.1程序到Windows98时,出错:

\LoadReportFailed\

是因为查询引擎DLL(CRQE.dll)在客户计算机上没有正确注册。

要解决这个问题,从开发计算机复制Dbghelp.dll到客户计算机的\C:

Windows\system32\文件夹。

在线支持:

水晶报表官方实例大全

在本文档中,你将获得由技术支持创建的示例报表列表。

这些示例报表示范了各种各样的报表创建技巧。

目的是示范概念。

这些示例报表被完全用文献证明,并且不被技术支持所支援。

文档包含了每种应用的描述,及其下载链接。

目录

示范报表设计的示例报表

  数组示例

  营业日和小时示例

  交叉表示例

  日期和时间示例

  格式化和文本示例

  公式示例

  图表示例

  组和深化示例

  标签示例

  参数示例

  子报表示例

  表链接示例

联系CRYSTALDECISIONS以获得技术支持

________________________________________________________________  

示范报表设计的示例报表

数组示例

文件名:

cr_arrays_samples.zip

该文件包含了多种示例报表,示范了如何在水晶报表8.x中建立及使用数组。

http:

//support.crystaldecisions....ays_samples.zip.asp

·BubbleSort.rpt

该报表展示如何创建公式来排序数组中的元素。

用户应该熟悉数组和高级公式。

·CR_Dynamic_Array_Builder_Crystal_Syntax.rpt

该报表示范如何随着报表进程,一步步的建立数组。

·CR_Index_not_store_and_fetch.rpt

该报表示范如何为报表建立指针,使用动态数组创建和子报表。

用户应该熟悉数组和子报表。

·CR_Looping_Through_Multiple_Value_Paremeter.rpt

该报表示范如何使用数组检查用于数据输入的多值参数。

用户应该熟悉数组和复杂公式。

·CR_Manual_Running_Array.rpt

该报表展示使用数组求和的多种方式。

用户应该熟悉数组。

vCR_Pass_Values_From_Main_Report.rpt

该报表示范如何将数组从主报表传递到子报表。

用户应该熟悉数组和子报表。

·ManualTopN.rpt

该报表将展示如何使用数组改变“前N个”报表,来根据不同的字段排序。

用户应该熟悉数组。

·RandomRecordGenerator.rpt

该报表允许用户输入一个值,来指定返回记录的数量,而且返回记录将会随机产生。

用户应该熟悉数组和复杂公式。

·CR_Multiple_Arrays_Dynamically_Populated.rpt

该报表允许用户当记录数量超过1000时,建立多个数组。

________________________________________________________________

营业日和小时示例

文件名:

cr_businessdh_samples.zip

该文件包含了多种示例报表,用来示范水晶报表8.x中营业日和小时的计算。

http:

//support.crystaldecisions....sdh_samples.zip.asp

·Business_Days_v8.rpt

该报表示范如何建立包含指定年份的所有营业日的数组。

用户应该熟悉数组和复杂公式。

·BusinessDays_Hours.rpt

该报表展示如何创建公式,来计算两个日期时间字段之间的营业日/营业小时的数量。

________________________________________________________________

交叉表示例

文件名:

cr_crosstabs_samples_zip

该文件包含了多种示例报表,用来示范如何在水晶报表8.x中创建和使用交叉表。

http:

//support.crystaldecisions....abs_samples.zip.asp

·MockCrosstabSCR7.rpt

该报表示范如何为没有使用交叉表对象的报表,创建交叉表外观。

·VirtualPageNumbersSCR8.rpt

该报表示范了对交叉表内的虚拟页进行编号的一个变通办法。

用户应该熟悉交叉表和简单公式。

·WPRFormulaeInCrosstabs.rpt

通常WhilePrintingRecords公式不能在交叉表中使用,而该报表给出了一个变通办法。

用户应该熟悉子报表和高级公式。

日期和时间示例

文件名:

cr_date_time_samples.zip

该文件包含了多种示例报表,用来示范水晶报表8.x中日期和时间范围的计算。

http:

//support.crystalde

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1