本文共 2280 字,大约阅读时间需要 7 分钟。
有水晶报表的应用程序在部署安装时需要做一些特别的处理处理方法为:msdn资料
ms-help://MS.MSDNQTR.2003FEB.2052/crystlmn/html/crconreportdeploymentscenarios.htm 论坛上一些前辈的做法: 1、注册码 注册号: 6707437608 密码: AAP5GKS0000GDE100DS 2、分发到win98、win2K、winXP机器上: 原理: 用 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写的,所以需要它!)4)打开解决方案-->右键点击regwiz.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
5)生成解决方案(或直接按Ctrl+Shift+B)至此CrystalReport的整个分发程序已经做好,所要做的是先在Win98装上dotNetFramework和MDAC27(在更新盘里有),再把刚才做的那个安装程序双击一下……
如果没有意外的话,你的程序在windows平台上已经可以运行了,下面对大家平常做Crystal Report时会碰到的一些问题做一下总结:
1、什么是拉和推模型 答:简单的说拉就是直接从数据库中提取记录(静态),推则是用ADO.NET、ADO、DAO、CDO、RDO……等动态地从数据库中提取记录。 2、license key是几位数的? 答:len("AAP5GKS0000GDE100DS") 3、分发到客户机时“查询引擎出错” 答:那是因为没有安装VC的运行库:VC_CRT.msm、VC_STL.msm 4、如何动态生成报表 答:献上代码一段,希望对大家有帮助。 private void btnPreview_Click(object sender, System.EventArgs e) { CrystalReport crpt = new CrystalReport(); crpt.SetDataSource(DataSet); // //开始生成打印预览窗体 // Form rptForm = new Form(); rptForm.Text = "预览"; rptForm.FormBorderStyle = FormBorderStyle.FixedToolWindow; rptForm.WindowState = System.Windows.Forms.FormWindowState.Maximized; CrystalDecisions.Windows.Forms.CrystalReportViewer rptView = new CrystalDecisions.Windows.Forms.CrystalReportViewer(); rptView.ReportSource = crpt; rptForm.Controls.Add(rptView); rptView.Dock = System.Windows.Forms.DockStyle.Fill; rptForm.Show(); }转载地址:http://nairf.baihongyu.com/