Web水晶报表部署总结
- 格式:docx
- 大小:1.39 MB
- 文档页数:7
水晶报表使用经验(不断扩充中)一:水晶报表获取数据库字段前一段的课程中我讲了关于如何获取报表的数据库字段,当时讲的方法是使用OLE DB建立新的数据链接,通过SQL语句来获取要在报表中绑定的数据库字段的,从而避免了使用强类型数据集,实际上这是使用了PULL模式,在实际应用上它会两次链接到数据库,会造成性能损失。
下面我介绍一下使用“仅字段定义”方法来获取数据库字段:1. 1:建立新报表。
2:在“数据库专家”中选择“创建新连接”中的“仅字段定义”。
如下图:在弹出的窗体中选择“创建文件”,如下图:在弹出的“数据库定义工具”中输入字段名称、选择字段类型即可编辑所需要的字段了,(如下图)。
创建完字段后关闭窗体,弹出窗体,选择“保存”会生成ttx类型的文件,(如下图),此文件无须放到项目中,删掉也无所谓,亦可以保留以待日后更改。
以上是通过“仅定义字段”方法来获取绑定字段的方法。
通过这种方法来获取字段更快捷灵活,且不会占用数据库资源,而且也不用使用强类型数据集。
二:样式表的应用。
初始状态:一个web页,一个CrystalReportViewer控件,使用CrystalReportViewer控件加载rpt文件。
实现方法有两种:1:在web页的Html 编码内进行样式表的引用,然后在rpt文件中的要进行设置的对象的CssClass属性写入样式名称即可。
2:在CrystalReportViewer控件的CssFileName属性中写入样式表文件的相对路径,然后再在rpt文件中在设置即可。
三:含有子报表的报表的显示问题。
初始:使用“仅字段定义”方法定义了两个表,一个用在主报表上,一个用在子报表上。
设计完报表后,示例代码如下:RPT.PingShenForLiGang rpt = new CRForCA.RPT.PingShenForLiGang();System.Data.DataSet ds = BuildDS();rpt.SetDataSource(ds);this.CrystalReportViewer1.ReportSource = rpt;这样做在运行时会弹出窗体要什么验证的,所以需要对子报表的数据进行绑定,那么,如何解决呢?引用命名空间:using CrystalDecisions.CrystalReports.Engine;以上代码改为:RPT.PingShenForLiGang rpt = new CRForCA.RPT.PingShenForLiGang();System.Data.DataSet ds = BuildDS();//获取子报表SubreportObject oSubreport1 =(SubreportObject)rpt.DetailSection3.ReportObjects["Subreport5"];ReportDocument oSub1 = oSubreport1.OpenSubreport("mytest");//绑定子报表oSub1.SetDataSource(ds);//绑定主报表rpt.SetDataSource(ds);this.CrystalReportViewer1.ReportSource = rpt;需要对子报表在进行数据绑定,这样就会解决这个问题了。
水晶报表使用总结手头上的一个项目,终显雏形,其中遇到一些问题,经过多番努力,终于得以解决,主要是水晶报表方面的。
因为是第一次用,总结的同时,也给后来可能用到水晶报表的人一些微弱的指引,所以如果总结的不好的话,请大家指正。
关于水晶报表的一些基本概念,如push和pull模式等如果想了解的话,自己百度搜索下,或是找本书看就可以了。
这里我主要是根据实际应用到的要求,来进行带图的详细介绍,希望对新手有所帮助。
使用的是VS2008,在页面中添加命名空间的引用,主要有以下几个:using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.ReportSource;using CrystalDecisions.Shared;下面先来看下,利用水晶报表做出来的效果图,只是实现功能,界面未经过美工处理,有点难看,多多包涵.图一图二由于是统计报表,所以在应用中需要传递参数值,在实际应用中,我是利用了存储过程来实现的。
Create proc PrintCJ@cjbh varchar(50)AsSELECT Cjdy_zb.DWMC, Cjdy_zb.ND,Cjdy_zb.JD, Cjdy_zb.QSDD,Cjdy_zb.JFJZRQ, Cjdy_zb.YJQJS, Cjdy_zb.YJQJZ, Cjdy_zb.SKDW,Cjdy_fb.QSSY, Cjdy_fb.YT, Cjdy_fb.DYGY,Cjdy_fb.DEGY, Cjdy_fb.DSGY, Cjdy_fb.BCHJ FROM Cjdy_fb INNER JOIN Cjdy_zb ON Cjdy_fb.CJBH = Cjdy_zb.CJBH and Cjdy_zb.CJBH= @cjbh;GO下面截图截图一步一步来操作实现:(1)、在项目中添加一个新文件夹,如Report文件夹,然后在该目录下右键添加Crystal报表。
VS2008水晶报表发布部总结一、安装运行时支撑文件如果你安装了VS2008,那么可以找到如下目录:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports1 0_5此目录下有如下文件:COPY到服务器上根据服务器CPU情况选择性地安装一下。
二、将WEB项目打包成安装程序1. 在WEB解决方案中新建一个项目,选择项如下:2. 右键点击项目名称,选择“视图”-“文件系统”3. 按下图操作:4. 设置项目的启动文件:5. 在项目名称上右击,按下图操作,选“项目输出”:6. 选“内容文件”后再“确定”:7. 按SHIFT+F6即可生成安装文件,可以在项目的目录下能找到如下结果文件:Copy这个MSI文件到服务器上安装完就可以浏览了。
三、修补水晶报表的图标显示和打印功能问题:如上所述,是可以浏览了,但是报表显示的工具栏上图标出不来:如下:看到吗,小图标出不来。
其它你再试试,打印也没法选打印机的。
解决办法:1. 在自己开发的PC上找到如下目录:C:\WINDOWS\\Framework\v2.0.50727\ClientFiles\CrystalReportWeb FormViewer4注意:CrystalReportWebFormViewer4中的4有可能与你的不一样,无所谓的。
2. 将CrystalReportWebFormViewer4目录复制到你的WEB服务器上项目所在目录中,如:C:\???????\aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer4再试试看吧,问题解决!祝好运!水晶报表安装部署(vs2005,vs2008)1.水晶报表安装程序和汉化包C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalRepo rts2.安装水晶报表运行时支持,打包下面这个目录到需要安装的服务器,然后点击“CRRedist2008_x86.msi” C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports1 0_53.将下面几个dll拷贝到/bin下,注意版本号 2005,在这个目录C:\Program Files\Microsoft Visual Studio 8\ReportViewer 2008,在这个目录C:\Program Files\Microsoft Visual Studio 9.0\ReportViewermon.dllmicrosoft.reportviewer.processingobjectmodel.dllmicrosoft. reportviewer.webforms.dll安装一下,然后重启服务器,再访问就OK了从网上找的方法是合并msm什么的,我的程序又不是用msi打包的,所以,不能用,换种方法:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports1 0_5这里可以看到CRRedist2008_x86.msi及zh-CHS\CRRedist2008_x86_chs.msi只要把这两个安装了,水晶报表就可以使用了,因为网上有人说水晶报表30天会过期,我把日期调到30天后,看了看,正常发布软件时,把以上水晶报表的两个安装文件给打包过去安装就OK了。
2019-1-17⽔晶报表技巧总结【⼆】第⼀条:⽔晶报表分组分页且每页最多显⽰N条记录要求:1、详细节最多5条记录(不能超过5条);2、⽆论前⼀组是否满5条记录,每个新组都要另起⼀页3、可以显⽰组内分页的情况,即:显⽰⼀个组被分为⼏页并且当前是第⼏页我们知道每页最多显⽰N条的控制⽅法,打开节专家,在详细节后⾯新建页公式编辑:RecordNumber mod N = 0RecordNumber即记录数,⽆论分组与否,是⾃动随记录递增的,所以在这⾥,我们不能⽤RecordNumber,⽽应该是在每个新组前要重置这个RecordNumber,⽤这个重置的RecordNumber来取模控制每页最多显⽰5条记录,于是我们很⾃然就想到了运⾏总计字段,由它来帮我们重置RecordNumber,这样我们应该就很明朗了,接下来让我们⼀起去设计模板:报表按ID分组就不⽤再提及了吧?(右击报表空⽩处->插⼊->组)⾸先新建⼀>运⾏总计字段汇总字段:XXX(最好选择的字段和分组字段不同)汇总类型:计数求值:对于每个记录重置:组更改时设计好后把,字段放到【详细资料】中,根据需要可以抑制显⽰。
点击节专家,【详细资料】-->【在后⾯也新建页】勾上-->设置公式:字段是刚刚建⽴的【运⾏总计字段】{#RTotal0} mod 10=0针对需求2,与需求1同理,只不过此时我们是在#组尾(组页脚)节在后⾯页新建页的公式编辑:Not OnLastRecordOnLastRecord意指最后⼀条记录,Not OnLastRecord⾃然是⾮最后⼀条记录,在这⾥就是指⾮最后⼀条记录时就在后⾯页新建页,最后⼀条记录时就不⽤再新建页了。
若不⽤该公式控制的话,报表的最后⼀页总是空⽩页(没有详细节数据)需求3:组内分页及显⽰页码新建⼀个【公式字段】公式设置如下:记录的组记录总数:count(⼀个报表参数,分组参数);前者最好是运⾏总计的字段。
vs2005水晶报表打包部署vs2005中的crystalReport客户端分发C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReportsCRRedist2005_x86.msi在客户端运行上面的文件即可1)新建“安装和部署项目”-->“安装项目”,确定后在我们的解决方案中多了个安装和部署的项目2)右键点击刚建的安装项目-->添加--->项目输出-->从列表中选择主输出-->选择输出的项目3)右键点击刚建的安装项目-->添加--->合并模块-->把我们下载到的10 net 部署的合并模块全部添加进去4)注意有个CrystalReports10_NET_EmbeddedReporting.msm的模块,我们查看它的属性,把AV860-01CS00G-U7000NC填写到keycode属性值中,要不编译不通过的.5)最后我们来编译生成我们项目的安装文件,setup.exe在客户端就可以安装正常使用了下载合并模块简体中文(cr10_net_merge_modules_chs.zip)/communityCS/FilesAndUpdates/cr10_net_merge_modules_chs.zip.aspcr10_net_merge_modules_chs.zip解压后有四个合并模块分别为:CrystalReports10_maps.msm ;CrystalReports10_NET_EmbeddedReporting.msm;CrystalReports10_NET_RemoteReporting.msm;CrystalReports10_NET_WebServiceReporting.msm前几天用VS2005做了个简单的医务系统的演示程序,B/S模式的,里面用到了水晶报表,说实话,这还是我第一次用水晶报表,看了看帮助就开始做,还算是顺利吧,以为是演示用,要求不太高.做完了就发布,然后就把程序给人家了,结果到了人家那水晶报表那块不能看!他说水晶报表发布的时候需要考几个库,VS发布的时候不能自己把dll文件打包放到里面去,我就把那两个文件(CRDesigner.dll,crvspackage.dll,放在VS安装目录的Crystal Reports文件夹里)给人家考了过去,结果还是不行,后来上网查说需要Crystal Reports 合并模块,从网上down了一个,做一个了安装程序把它装上了也行不通,没办法回来了。
水晶报表分页汇总收藏水晶报表分页汇总建三个公式字段,第一个(公式1)输入下面的公式:whileprintingrecords;global numbervar ptotal;ptotal:=0;第二个(公式2)输入下面的公式:whileprintingrecords;global numbervar ptotal;ptotal := ptotal + [要汇总的字段];如果要汇总的字段不是数字,就用tonumber()函数转换;第三个(公式3)输入下面的公式:whileprintingrecords;global numbervar ptotal;把公式1放在页眉,公式2放在详细资料,并隐藏公式1和公式2;把公式3放在页脚,格式公式3,设置为你要显示的格式。
这样就行了。
水晶报表分页并自动插入空白行在论坛上经常会看到水晶报表分页的问题,这个很好解决。
但是自动插入空白行的问题却一直没有很好的答案,经过研究找到一个变通的办法来实现了。
'分页在详细资料上点格式化节,在后面页新建页打勾公式中输入:if _disibledevent= FALSEelseif RecordNumber mod 5 =0 thenFORMULA = TRUEelseFORMULA = FALSEend ifend if'(BASIC 语法)---------------------------------------------------------------------最后页不足,用空行填充:新增一个空白详细资料行,格式化此节,在抑制显示(无深化)打勾公式中输入:if not _disibledevent= TRUEelseif (RecordNumber mod 5 <= 1) then '第一个,1FORMULA = TRUEelseFORMULA = FALSEend ifend if'(BASIC 语法)...接着第二个[ 新增一个空白详细资料行,格式化此节,在抑制显示(无深化)打勾]:公式中输入:if not _disibledevent= TRUEelseif (RecordNumber mod 5 <= 2) then '第二个,2FORMULA = TRUEelseFORMULA = FALSEend ifend if...接着第三个[ 新增一个空白详细资料行,格式化此节,在抑制显示(无深化)打勾]:公式中输入:if not _disibledevent= TRUEelseif (RecordNumber mod 5 <= 3) then '第三个,3FORMULA = TRUEelseFORMULA = FALSEend ifend if在论坛上经常会看到水晶报表分页的问题,这个很好解决。
VS2005自带的水晶报表使用和发布步骤总结整个使用和发布水晶报表的过程:1.新建一个Dataset,在Dataset中建你所要的表Table2.将建好的Dataset做为数据源模板,构建想要的水晶报表样式,该报表文件可暂命名为:CrySJBB.rpt2.写“Select”的SQL语句代码,注意:Table中的字段一定要在所写的语句中的字段找得到!3.为报表赋数据源并加载该报表,代码可如下://reportPath为报表路径,下面会谈起怎么取的。
reportDocument1.Load(reportPath);reportDocument1.SetDataSource(数据源);CryReViewer.ReportSource = reportDocument1;4.注:加载该报表时的路径一定不能用网上所说的取应用程序下的相对路径,因为那样在发布后是找不到报表路径的.5.报表文件CrySJBB的路径rptreportPath的取法:(1).将建好的报表文件CrySJBB放在某工程下(也可以放在应用程序下,这里以应用程序为例)的Resources资源文件中,这一点应该会添加吧。
(点开Properties下的Resources.resx,双击它,点击里头的“添加资源”的“添加现有文件”即可)(2).写代码,去取得该Resources资源文件下的报表文件,这样做,不但是运行程序还是发布程序,都能自动去找到报表文件。
(我这是C/S模式,B/S模式也可以这样做,只是将取得报表文件后的路径重新设置一下就可以了)using System.Resources;//引用命名空间;string AppPath = Application.StartupPath; //C/S模式下下载客户端到本地的应用程序路径;string RptFileFullName = AppPath + @"\\CrySJBB.rpt"; //假定取得报表文件后的路径;//取得Resources资源文件下的报表文件,ZJFF应用程序名ResourceManager resources = new ResourceManager(typeof(ZJFF.Properties.Resources));byte[] bytes = (byte[])resources.GetObject("CrySJBB");//只写报表名称,不带后缀if (File.Exists(RptFileFullName)) //若假定路径中有该文件,则删除,否则新建一个File.Delete(RptFileFullName);FileStream fileStream = new FileStream(RptFileFullName, FileMode.CreateNew);BinaryWriter binWriter = new BinaryWriter(fileStream);binWriter.Write(bytes, 0, bytes.Length);binWriter.Close();fileStream.Close();reportPath = RptFileFullName;reportPath 就是最后我们要取得路径,即服务器上已下载到本地后的报表路径,加载这个路径就可以查看我们已经做好的水晶报表了。
在WEB环境下打印报表的crystal的解决方案2001-11-7 动网先锋< %@ LANGUAGE= "VBSCRIPT " %>< %' = = = = = = = = = = = = = =' 从ADO Recordset直接生成报表' = = = = = = = = = = = = = ='' 概念:'' 这个应用被设计成演示怎样从ADO Recordset生成报表。
我们首先建立ADO Connection和' Recordset对象,然后用SQL语句从数据库中生成一个记录集。
然后我们建立一个Crystal ' Reports对象,并把这个这个对象指向ADO recordset。
最后我们将Crystal Reports ' Smart Viewer送到客户端显示这个报表。
' 第一步:建立ADO Connection and Recordset' 一个ADO的数据库连接就是通过你已经存在的ODBC数据源(DSN)从象ASP这样的应用中来访问' 数据的连接。
为了达到这个例子的目的,我们将使用到用一个叫做"Xtreme Sample Data "的' 连到Access数据库Xtreme.mdb系统DSN' 建立ADO数据库连接:Set oConn = Server.CreateObject( "ADODB.Connection ")'这里建立叫做"oConn "的ADO connection,我们将用这个ADO connection对象连接到上述的DSN'用ADO connection 必须先要打开它:oConn.Open( "Xtreme Sample Database ")'这里打开我们的ODBC的数据源,这个数据源指向Access数据库Xtreme.mdb'现在我们必须建立一个RecordSet对象:set session( "oRs ") = Server.CreateObject( "ADODB.Recordset ")'在上面我们建立了一个session( "oRs "). 这个session中存放一个RecordSet对象'将要包含用SQL语句返回的数据'定义和生成recordset:session( "oRs ").ActiveConnection = oConn'定义这个recordset将要使用的Connection 对象session( "oRs ").Open "SELECT [Product ID], [Product Name] FROM Product "'用SQL语句从Xtreme.mdb库的"Product "表中取出两个字段'==============================================================='建立Crystal Reports 对象'==============================================================='你可能注意到,Crystal Reports对象被设为session,这是因为已经需求就会被一个叫做' "rptserver.asp "的ASP处理,为了让rptserver.asp能非常容易地访问Crystal Report对象,'我们把这些对象都设为session。
Crystal水晶报表基础知识汇总(一)制作B/S的朋友肯定对Crystal Report绝不陌生功能强大,方便我在网上查找了许多关于Crystal Report的资料对其做了整理、调试在自己学习的同时,也希望拿出来与大家分享不足之处请多指教一、Crystal报表的建立水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PU SH)拉模式:在水晶报表生成时的数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表中SQL语句而生成的dataset对像也就是说,推模式是用dataset组装水晶报表水晶报表组件介绍:水晶报表在VS2005中有两种组件:WEB项目中分别是CrystalReportSource,CrystalReportViewerFORM项目里是分别是CrystalReport,CrystalReportViewerCrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成WINFORM中的建立:1.首先建立一个新的项目工程,在项目中添加一个Crystal报表在报表的创建向导中我们创建一个新的OLE DB (ADO)连接,以便于我们对SQL数据库中表的连接2.在弹出的连接类型窗口内,选择Microsoft OLE DB Provider for SQL Server一项,以确立报表的数据连接为SQL服务类3.在连接信息当中选择所需使用的服务器名,并输入相应用户ID和密码,选择好报表所要连接的数据库后,新的数据库连接便建立完成此时,我们可以从报表数据连接窗口中看到我们所创建的报表,并选择需要的表,进行数据连接4.此后,我们可以根据报表向导进行表间关联、排序索引设置、;样式选择等表的初始化设置完成Crystal 报表与SQL服务器内数据连接以后,我们可以在报表中预览所创建的报表样5.对Crystal报表进行保存后,在WINFORM的窗口中建立CrystalReportViewer控件,生成水晶报表的预览窗口在建立中,我们可以根据需要对该控件的添加项进行筛选,包括显示工具栏、显示组树、显示状态栏三项6.在WINFORM窗口中添加ReportDocument控件,并为该控件选择一个需要进行类型化的Report表单WEBFORM中的建立:建立方法与WINFORM方式基本相同,但不需要建立ReportDocument 在建立过程中一定注意,在.aspx 设计器中建立CrystalReportViewer与CrystalReportsource两个控件,前者用作水晶报表的预览,后者起到报表与预览连接的作用,负责建立CrystalReportViewer与Crystal报表间的连接二、报表数据的连接拉模式(PULL):WINFORM中建立连接:方式一:如果该页面只调用固定的一个Crystal报表,可以直接在CrystalReportViewer中进行选择报表,将Crystal 报表与其进行绑定方式二:如果页面需根据具体要求,调用不同的报表进行显示,那么我们就需要通过对报表的连接的设置来完成这一功能程序如下://CrystalReport1.rpt是水晶报表文件的名称;CrystalReport11是从工具箱加到页面上的CrystalDocument crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt");//运用CrystalDocument读取所需Crystal表单路径;crystalReport11.SetDatabaseLogon("sa", "", @"BENQ-JA Y", "Userdatabase");//进行CrystalDocument连接服务器的设置,其中第一参数:用户名;第二参数:密码;第三参数:服务器名;第四参数:数据库名crystalReportViewer1.ReportSource = crystalReport11;//将CrystalReportViewer的报表源指向CrystalDocumentWEBFORM中建立连接:方式一:在CrystalReportSource中直接对表单源进行配置,选择需要宣示的表单在CrystalReportViewer中将报表源指定为CrystalReportSource,即可在该网页中生成指定报表的水晶报表方式二:通过程序进行具体配置,将所需Crystal报表与预览页面进行连接实现报表的灵活性选择程序如下:// CrystalReport.rpt是水晶报表文件的名称;CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));//读取Crystal表单所在路径,将其与CrystalReportSource进行绑定CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "", @"BENQ-JA Y", "UserDatabase");//进行数据库连接,参数一:用户名;参数二:密码;参数三:服务器名;参数四:数据库名CrystalReportSource1.DataBind();//对CrystalReportSource进行数据绑定CrystalReportViewer1.ReportSource = CrystalReportSource1;//将预览源指定为CrystalReportSourceCrystalReportViewer1.DataBind();//对CrystalReportViewer进行数据绑定推模式(PUSH):在推模式下,必须建立DataSet数据集,用来进行数据源填充在推模式中编程组装的DataSet里的SQL 语句中的字段要与水晶报表里的SQL语句字段一致WINFORM中建立连接:程序如下:string sql = "select * from UserInfor";string conn = "server=BENQ-JA Y;Database=UserDatabase;uid=Sa;Pwd=;";DataSet ds = new DataSet();SqlConnection con1 = new SqlConnection(conn);SqlCommand cmd1 = new SqlCommand(sql, con1);SqlDataAdapter sqlad = new SqlDataAdapter();sqlad.SelectCommand = cmd1;//获得一个TRANSACT-SQL存储过程,用于在数据源中选择记录sqlad.Fill(ds, "sql");//填充SQL命令所指定的行crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt");crystalReport11.SetDataSource(ds.Tables["sql"]);crystalReportViewer1.ReportSource = crystalReport11;WEBFORM中建立连接:程序如下:string sql = "select * from UserInfor";string con1 = "server=BENQ-JA Y;Database=UserDatabase;uid=sa;pwd=;";DataSet ds = new DataSet();SqlConnection con = new SqlConnection(con1);SqlCommand com = new SqlCommand(sql, con);SqlDataAdapter sqlad = new SqlDataAdapter();sqlad.SelectCommand = com;sqlad.Fill(ds, "sql");CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt")); CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["sql"]);CrystalReportSource1.DataBind();CrystalReportViewer1.ReportSource = CrystalReportSource1;CrystalReportViewer1.DataBind();三、报表打印水晶报表的CrystalReportViewer中默认配备的工具栏可实现打印功能,但其功能比较单一,无法进行打印机选择。
JA V A水晶报表使用过程及注意事项一、第一阶段1.软件安装:Crystal Reports XI + Eclipse2.首先打开Eclipse,新建报表模板:new→other→ Crystal Reports web Project,姑且命名为Pen 注:此时可能会显示错误,不要紧,请不要理会。
3.在Java Resources:src下面的默认包中创建欲使用的JavaBean,如:Pen.java注意:一定要保存4.右键点击JavaBean下面的,选择Crystal Report→ add to a new Crystal Report,并自行创建名称注:名称的创建是有用处的,这便是生成模板的过程5.这时选择左下角的Layout,即可看见可视化编辑窗口,在右侧的Field Explorer中可选择所创建的虚拟字段(所创建的JavaBean中的属性)放入窗口中。
二、第二阶段6.打开MyEclipse,创建web project,命名为PenDemo。
7.复制Pen(Crystal Reports web Project中)项目src文件夹下的com文件夹、CRConfig.xml和log4j.properties文件到PenDemo(MyEclipse中的正常web project)中相应的目录下。
注:这时你会看见有错误,下一步解决8.复制Pen(Crystal Reports web Project中)项目WEB-INF下的全部内容到PenDemo(MyEclipse 中的正常web project)到相应的目录下。
注:请刷新PenDemo项目你会发现错误消失9.请将PenDemo(MyEclipse中的正常web project)src下面包中的生成的report模板cut至webroot 下。
10.copy资料包中的除了web-inf以外的所有文件(夹)至项目工程PenDemo相应的目录下注:刷新又出现错误了,不要紧,这是因为我们本末倒置的缘故,具体原因自己思考11.为了节省时间,我们可以copy资料包中的相关对数据操作的业务类来直接用,首先copy资料包中的DataSource.java至PenDemo项目中,存放的包及路径自己定。
【转载】⽔晶报表10.5在VC++.net2008中的使⽤与部署由于在我实习的项⽬中可能⽤到⽔晶报表,⽽且如果时间允许我的毕业设计的计算书部分也想使⽤⽔晶报表,所以就上⽹找了篇关于⽔晶报表VC开发的⽂章看看。
VS2008⾃带了⽔晶报表10.5的开发版本,该版本的⽔晶报表声明中可以由开发者⾃由发布.VC2008中使⽤该版本的⽔晶.按如下⽅式操作:1.⽤VC6.0⽣成⼀个对话框⼯程.对话框上右键->插⼊ActiveX组件->选Crystal ActiveX Report View Control 10.5,Ctrl键双击这个插⼊的组件,会出来映射变量向导.输⼊变量名 m_View. 其他都默认,提⽰你插⼊两个类时,就确定.这个步骤在.net⾥会出异常,只能通过⽼VC来⽣成.⽐较恶⼼.在stdafx.h⾥加⼊#import "C:\\Program Files\\Business Objects\\Common\\2.8\\bin\\craxddrt.dll" no_namespace⽼VC的⼯程就能运⾏了.OK,接下来把这些东东放到⼯程⾥.2.创建.net VC/MFC⼯程. 把上⼀步⾃动加⼊的两个⽔晶类加到你⼯程⾥.在stdafx.h⾥加上:#import "C:\\Program Files\\Business Objects\\Common\\2.8\\bin\\craxddrt.dll" no_namespace#include "CrystalReportViewer10.h"把上⼀步中映射变量的DDX_Control(pDX, IDC_VIEW1, m_View);考到你的相应类⾥.在你使⽤该⽔晶控件的Dialog的 .h⽂件⾥定义:IApplicationPtr m_Application;IReportPtr m_Report;CCrystalReportViewer10 m_View;//这是你映射的控件变量在该对话框的 OnInitDialog⾥加⼊:ShowWindow(SW_MAXIMIZE);CString strFileRpt="C:""Fuck.rpt";CString strFileXml="C:""Fuck.xml";m_Application.CreateInstance (__uuidof(Application));m_Report =m_Application->OpenReport(_bstr_t(strFileRpt));IDatabasePtr pDB=m_Report->Database;pDB->Tables->Item[1]->Location=_bstr_t(strFileXml);m_View.SetReportSource(m_Report);m_View.SetDisplayToolbar (TRUE);m_View.SetDisplayGroupTree (FALSE);m_View.SetDisplayBorder (FALSE);m_View.SetDisplayTabs(FALSE);m_View.Refresh ();//调⽤下⾯两⾏中的⼀⾏:m_View.ViewReport();//预览.m_Report->PrintOut();//不预览,直接打印3.程序的打包与发布:做安装包时,把⽔晶10.5的安装⽬录下所有⽂件(默认是C:"Program Files"Business Objects"Common"2.8"bin)都考到与你的可执⾏⽂件同⼀⽬录.然后把所有的dll都注册⼀下就OK了,也就是所有加进去的⽔晶的东东,只要是dll,就 regsvr32 他⼀下.现在的打包⼯具应该都⽀持安装时注册组件功能.这我就不细说了.还有就是⽔晶这个垃圾发布时需要 .net framework 2.0⾄少.唉,这个⾃⼰打包吧,唉,要多恶⼼有多恶⼼!!以上是我在 2008中实际使⽤⽔晶的实践经验总结.按以上步骤打包后可以在⽆⽔晶的机器上顺利运⾏.有些步骤⽐较恶⼼.⽐如说第⼀步,⽼VC中完全⽀持插⼊⽔晶的ActiveX控件并顺利映射变量.但 2008⾥⾯确不⾏.只好借鸡⽣蛋.⽤⽼VC⽣好现成的代码后再加到2008⼯程中.当然你要是⽤C#开发的⽔晶的话就简单多了,⽹上例⼦⼀堆堆的,但唯独就是没2008的.。
使用Pull模式我们将通过下面的这些步骤来通过Pull模式来执行水晶报表1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。
2.拖放一个CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件。
3. 在代码中调用DataBind方法。
创建.rpt 文件:1) 在右击”解决方案游览器“,在弹出的菜单中选择”添加“--”添加新项“--> ”Crystal Report”2) 在”Crystal Report 库”中选择”作为空白报表“单选按钮,最后单击“确定“。
3)这里将弹出水晶报表设计器。
4) 右击报表中的”详细资料区”,选择“数据库”-> “添加/删除数据库... "5) 在弹出的”数据库专家“中,扩展”OLE DB(ADO)“选项,此时会弹出另外一个”OLE DB(ADO)“窗口。
6) 在"OLE DB (ADO) " 弹出窗口中,选择"Microsoft OLE DB Provider for SQL Server "然后"Next "7) 指定连接的信息服务器:ASPCN (您的机器是什么名字就写什么)用户ID: sa密码:数据库:Pubs8) 单击”Next“,最后单击”Finish“按钮。
9) 这时你就能在”数据库专家“窗口中看到我们选择的数据库。
10) 扩展”Pubs“数据库,扩展”表“,选择”Stores“表并将其加到”选定的表“区中,单击”OK "按钮。
11) 现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表,以及表中的字段。
12) 拖放需要的字段进入报表的”详细资料“区。
字段名将会自动出现在”页眉“区。
如果你想修改头部文字,则可以右击”页眉“区中的文字,选择”编辑文本对象“选项并进行编辑。
13) 保存,这样我们就有了一个水晶报表文件。
部署水晶报表时的常见问题及解决方案整理部署水晶报表时的常见问题及解决方案目录:1、载入报表时报错2、部署到Windows 98 / ME 时,出错:"Load Report Failed"3、在Win98的客户端运行提示"该字段名未知"4、分发到客户机时“查询引擎出错”5、load crpe32.dll failed6、在 程序中加载报表时,出错:"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、CrystalReport s.Engine.DLL、CrystalDecisions.Web.DLL, 和CrystalDecisions.Windows.Forms.DLL……Managed_chs.msm 是该模块的中文版语言支持。
Database_Access.msm 该模块包含了数据库的驱动、与不同数据库的联结、报表导出为RTF 和HT ML 格式的文档和图表组件。
Database_Access_chs.msm 是此模块的中文版语言支持。
Regwiz.msm 注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过(3)运行库(*.msm)如果报表文件使用了 的dataset 数据集对象,那么VC_CRT.msm 和VC_STL.msm 模块也必须包含在安装工程中。
将webconfig 中<identity impersonate="true"/>true更改为false
具体为修改注册表下面两个键的值。
[HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\10.2\Report Application Server\InProcServer]
修改"PrintJobLimit"="1000"
修改为1000
[HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\10.2\Report Application
Server\Server]
修改"PrintJobLimit"="1000"
下载注册表文件
PS:另外一种修改方法是改成-1
如果还不行,请参考此贴,需要修改代码
/Forums/en-US/vscrystalreports/thread/143f3517-
c5c4-4c17-9da0-8c4bd54b6604
水晶报表打印不出来,请更换本机的PrintControl.cab包替换。
1.进入Windows功能窗口,然后看到internet信息服务选项,然后按照图中设置
即可,Ps:打√的选项下面为全选,方圈的下面按照图中打√的选择即可。
2.然后确定,会进入系统安装设置,此时可能需要等待两三分钟的样子。
缺少水晶报表DLL
没有添加默认页面
安装CRRuntime_32bit_13_0去解决 log4net问题
如果是报表未能加载,是权限问题,请将net service 用户加入到c:/Windows/Temp文件夹的权限列表
*windows server 2012R2中如果找不到netserveice,则查找 NETWORK SERVICE 用户
IE11下水晶报表不能打印问题,如果遇到,安装服务器vs2013,以及vs2013所需要的报表开发包,然后重启服务器,在客户端机器上,先把IE调成兼容IE8模式,然后再打印报表,最后调回IE11,报表打印正常。
安检报告单出来慢的问题,需要在服务器上重装CRRuntime_64bit_13_0_9.msi
*若不能正常安装水晶报表插件,需要先安装visual studio 2013 premium。
VS2013导出错误Method not found: 'CrystalDecisions.ReportAppServer.DataDefModel.PropertyBag CrystalDecisions.Report
解决办法:下载CRRuntime_64bit_13_0_12.msi,重新再服务器上进行安装。
在windows server 2012 R2 环境下部署IIS .5之后打开网站爆404.17:
解决过程:点击任务栏的服务器管理器,打开添加角色功能指导,在左侧点击服务器角色然后选择 Web服务器->应用程序开发
把ASP, 3.5 , 4.5 ,.Net Extensibility 3.5 , .Net Extensibility 4.5 勾上。
点安装。
安装完成后在按Win+R 打开运行窗口,
输入 iisreset重启iis服务。