.net2003部署水晶报表

原理:
用 Microsoft Installer (MSI)在您的安装包中包括的合并模块 (MSM) 分发。
MSI 合并模块(MSM)可在“C:/Program Files/Common Files/Merge Modules”目录中找到。
合并模块(MSM)分为三类:托管组件、数据库访问和密钥号码。
托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间。对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,这样您的用户在查看报表时,就不会被要求注册他们的 Crystal版本。
 

具体操作步骤:
1)新建“安装和部署项目”-->“安装向导”
2)选择项目类型(这里选“创建用于windows应用程序的安装程序”)-->下一步
3)选择要包含的文件:添加你的程序文件 + C:/Program Files/Common Files/Merge Modules下的managed.msm、managed_chs.msm、database_access.msm、database_access_chs.msm、regwiz.msm、VC_CRT.msm、VC_STL.msm。-->完成

具体功能如下:
managed.msm、managed_chs.msm、(托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间)
database_access.msm、database_access_chs.msm、(对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。)
regwiz.msm、(KeyCode MSM 处理 Crystal Decisions 密钥号码的安装)
VC_CRT.msm、VC_STL.msm(这个在msdn上绝对没提起,是vc的运行库,估计是Crystal Report或涉及到的某些程序是用vc写的,所以需要它!)

选择要包含的文件:添加你的程序文件 + C:/Program Files/Common Files/Merge Modules下的managed.msm、managed_chs.msm、database_access.msm、database_access_chs.msm、regwiz.msm、VC_CRT.msm、VC_STL.msm。-->完成
这里的添加是在“解决方案资源管理器”里,安装项目,弹右键,选“合并模块”,来添加。
managed.msm、managed_chs.msm、database_access.msm、database_access_chs.msm、regwiz.msm、VC_CRT.msm、VC_STL.msm

4)打开解决方案-->右键点击regwiz.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)

5)生成解决方案(或直接按Ctrl+Shift+B)
水晶报表注册码
注册号:6707437608
密码:AAP5GKS0000GDE100DS
---------------------------------------------------------------------------------------------------------------------------

 [推荐]部署水晶报表时的常见问题及解决方案
目录:
1、载入报表时报错
2、部署到 Windows 98 / ME 时,出错:"Load Report Failed"
3、在Win98的客户端运行提示"该字段名未知"
4、分发到客户机时“查询引擎出错”
5、load crpe32.dll failed
6、在 ASP.NET 程序中加载报表时,出错:"Load Report Failed"
7、部署 .NET 9.1 程序到 Windows 98 时,出错:"Load Report Failed"
------------------------------------------------
1、载入报表时报错
问题出在报表发布上。
发布使用水晶报表的项目需要包含三种组件:报表(*.rpt)、模块(*.msm)、运行库(*.msm),这些模块文件是在 C:/Program Files/Common Files/Merge Modules/ 目录里面。
(1)报表(*.rpt)
用户编程时创建的水晶报表文件。
(2)模块(*.msm)
Managed.msm 该模块包含了CR for VS .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 注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过
(3)运行库(*.msm)
如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_CRT.msm 和 VC_STL.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录
在VS.NET安装工程中,系统检测出来的依赖项只有 dotNETFXRedist_x86_chs.msm 和 Managed.msm这两个模块,其他的模块我们需要手动加入。
(1)在解决方案资源管理器里,右键单击安装项目选择"添加"-〉"合并模块(M)"
(2)在"添加模块"对话窗体,选择 Managed_chs.msm 、Database_Access, Database_Access_chs, regwiz、VC_CRT.msm 和 VC_STL.msm 模块
(3)重新生成安装项目,没问题,只是生成的安装程序一下子大了七、八兆。
-------------------------
2、部署到 Windows 98 / ME 时,出错:"Load Report Failed"
是因为查询引擎 DLL(CRQE.dll)在客户计算机上没有正确注册。
要解决这个问题,可以在客户计算机上手动注册 CRQE.dll,使用下面的命令:
regsvr32 "C:/program files/common files/Crystal Decisions/1.0/bin/CRQE.dll"
如果 CRQE.dll 没有成功注册,并且问题继续存在,在客户计算机上检查 ATL.dll 的版本。ATL.dll for Windows 98/ME 正确的版本是 3.0.8449。
通过使用下面三种方法中的任意一种方法,可以找到并注册正确版本的 ATL.dll。
(1)在客户计算机上装 IE6.0。
(2)在客户计算机上,手动复制和注册 ATL.dll,然后运行用于 Crystal Reports 分发的安装包。
(2)将 ATL.msm 合并模块添加到安装工程,ATL.msm 是 Visual Studio installer 1.1 的一部分,可以去微软的网站http://msdn.microsoft.com/vstudio/downloads/tools/vsi11/download.aspx下载, 添加办法同上。
-------------------------
3、在Win98的客户端运行提示"该字段名未知"
报表在Win2000的客户端一切正常,在Win98的客户端运行提示"该字段名未知"?
是因为报表使用到的 sql server 数据库中的字段名为中文的缘故,将其字段名改名为英文字段名。
-------------------------
4、分发到客户机时“查询引擎出错”
(1)“安装项目”要包含下列合并模块:
VC_CRT.msm
VC_STL.msm
(2)此外,确保 Msvcr70.dll 和 Msvcp70.dll 在客户计算机的“系统目录”里。
-------------------------
5、load crpe32.dll failed
下面是cr9net_deployment.pdf说明中的部署Crystal Report 9的步骤:
打开 Windows 应用程序。
在解决方案资源管理器中,右击 Windows 应用程序解决方案,指向“添加”,然后单击“新建项目”。
在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。单击“确定”按钮。
在解决方案资源管理中,右击安装项目,指向“添加”,然后单击“项目输出”。
在“添加项目输出组”中,选择“主输出”,然后单击“确定”。
将自动添加所有依赖项,如 dotnetfxredist_x86_enu.msm和dotnetcrystalreports.msm。
需要将dotnetcrystalreports.msm排除在项目之外,在解决方案资源管理器中右击这个模块的右键,选择“排除”。
在解决方案资源管理器中,右击安装项目,指向“添加”,然后单击“合并模块”。
在“添加模块”对话框中,选择下列要添加到安装项目的合并模块,然后单击“打开”:
reportengine.msm, crnetruntime.msm, license.msm
mapping.msm (可选,当在报表中使用了geographic maps时)
VC_CRT.msm、VC_STL.msm( 如果您部署的 Windows 应用程序使用 ADO.NET 数据集,则还需要包括 VC_CRT 和 VC_STL 合并模块)
在解决方案资源管理器中,右击 license.msm 文件,然后选择“属性”。
在“属性”窗口中,展开 MergeModuleProperties,然后在“许可证密钥”属性框中输入一个有效的许可证密钥。
注意 每当部署 Crystal Reports 应用程序时,必须提供许可证密钥。
从“生成”菜单中,选择“生成解决方案”以生成应用程序。
-------------------------
6、在 ASP.NET 程序中加载报表时,出错:"Load Report Failed"
确保 ASPNET 本地用户对报表所在的文件夹有“完全控制”的权限。
-------------------------
7、部署 .NET 9.1 程序到 Windows 98 时,出错:"Load Report Failed"
是因为查询引擎 DLL(CRQE.dll)在客户计算机上没有正确注册。
要解决这个问题,从开发计算机复制 Dbghelp.dll 到客户计算机的"C:Windows/system32" 文件夹。

 

----------------------------------------------------------------------------------------------------------------------------

动态改变数据源的代码


               Dim dsdataSet As New DataSet()

                Dim oRpt As New rptClient()   ‘已建立的报表rptClient

                请读者自行填充数据集dsdataSet

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

                oRpt.SetDataSource(dsdataSet.Tables(0))

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

                rptVew.ReportSource = oRpt

注意   FillDataSet 方法可连接到指定的数据库,提取数据,然后断开数据库连接。如果您希望将数据库中的多个表添加到报表中,请使用 SQL JOIN 语句将这些表联接在一起;然后在 FillDataSet 方法中指定一个结果表

   创建主从报表

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

1.      新建一个工程

2.      往FORM1中添加一个CrystalReportViewer控件

3.      在服务噐资源管理器中连接到SQL SERVER 2000上的Northwind数据库

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

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

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

7.      在窗口中添加代码。

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim oRpt As New CrystalReport1()

        Dim dsdataSet As New Dataset1()

 

        Dim CN As New Data.SqlClient.SqlConnection("data source=PMSERVER;initial catalog=Northwind;user id=sa;password=sa")

        CN.Open()

        Dim daOrders As New Data.SqlClient.SqlDataAdapter("select * from orders", CN)

        daOrders.Fill(dsdataSet, "orders")

 

        Dim daDetails As New Data.SqlClient.SqlDataAdapter("select * from [Order Details]", CN)

        daDetails.Fill(dsdataSet, "Order Details")

 

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

        oRpt.SetDataSource(dsdataSet)

        CrystalReportViewer1.ReportSource = oRpt

    End Sub

运行程序


用程序改变报表中text的文本

代码如下:

                Dim GetTextObject As TextObject

                ‘ 按名称获取 ReportObject,将其转换为 TextObject,并返回此对象。

                GetTextObject = orpt.ReportDefinition.ReportObjects.Item("text13")

                GetTextObject.Text = "XXXX系统"
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值