环境:SqlServer 2000;Vs.net 2000;Crystal Report 9;现在我在做一个.net Web项目,里面有大量的复杂报表,最近考虑用 Crystal Reports 水晶报表来做,但是经过这两天的摸索,对水晶报表这东西还是没的把握。1.水晶报数据访问模式有拉pull和推push模式,可不可以这样理解,pull模式是所有SQL取数据语句都
写在报表里(包括数据库连接字符串),push模式则在.net后置C#代码中组合好数据源(如DataSet)后再绑定到报表上(如:CrystalReportViewer1.ReportSource = oCR),这样.rft只是相当与一个显示控件;大家采用的是哪种方式?理由?2.看过有人在asp中做过的水晶报表,是在网页中嵌一个水晶报表ActiveX,这样有打印、导出按扭,个人觉得是一个比较好的显示方式,这种能不能就理解为pull拉模型?如果在.net中嵌类似一个ActiveX有什么考虑?在.net Web中是以HTML显示的,没的打印功能,怎么样解决?3.水晶报表有报表引擎,报表服务端,怎么把它部署到与Web IIS不同的机器,在程序中哪些地方会用到报表引擎方面的东西?如果不在WEB服务器端,有哪些限制与注意的地方,要怎么设置?4.按照飞刀写的一篇文章(http://www.yesky.com/20020618/1616438.shtml),我做了一个Push方式的例子,(DataSet1.xsd;Report1.rft;WebForm1.aspx+CrystalReportViewer)都照建了,但是最后显示的报表没有任何数据,只有一个字段标题,不知问题出在哪?是不是每做一个报表都要做类似一个 DataSet1.xsd 文件??现在我们的项目报表提取数据比较复杂,很多要用SQL 存储过程来做,希望做过这方面项目的朋友多指点,谢谢![email protected]

解决方案 »

  1.   

    请大家讲讲自己开发水晶报表的经验,不要搬人家的东西就贴上来,更希望能在MSN上直接交流,
    MSN:[email protected]
      

  2.   

    3 部署: 只要你可以在叶面上看到,就可以发布出去,客户端ie6.0以上看到完全没问题,5。5也可以。
    1 如果你到很多的存储过程/sql语句等,强列建议你使用push,最好是强类型,我认为比较好的解决方法就是在dataset中选定好数据,然后送到水晶报表,报表的工作只有一个,显示,并提供打印,如果使用水晶报表9。2以上的版本,还有叶面打印功能,是自带的,很方便。
      

  3.   

    to wen98091(雪) :
    你说”报表的工作只有一个,显示,并提供打印,如果使用水晶报表9。2以上的版本,还有叶面打印功能,是自带的,很方便”.我的项目是 .net Web 项目,全是B/S架构,用CrystalReportsViewer WebControl显示报表,最终IE客户端是以 HTML方式显示,没发现上面有页面打印功能啊?包括导出也没有,只有些“翻页”、“跳转”、“查找”、“放到缩小”按扭。能不能在网页中嵌一个水晶报表ActiveX,又能在C#代码中给它绑定数据源?
    注 :水晶报表(9.2.0.448),
      

  4.   

    1.可以这样理解,我一般用push,方便控制数据。2.9.2以上版本支持直接打印的。3.在Web服务器下载安装http://support.businessobjects.com/communityCS/FilesAndUpdates/cr10_net_server_install_chs.zip.asp即可4.不用每次都做一个DataSet的,用ADO连接即可。
      

  5.   

    9.2以上版本支持直接打印 是什么意思,
    我是在 .aspx 中放CrystalReportViewer ,最终显示给IE客户端的是HTML啊,上面的控件按扭也没"打印"?怎么回事?
      

  6.   

    做xsd数据构架,然后把数据推进构架,填充报表,至于导出,可以导成pdf,excel,html,word,cvs,等等
      

  7.   

    to bitsbird(一瓢 单身走我路);  你的意思是直接调window.print()打印网页吗?这对我不太合适,我这打印要打印多页,不只是网页所看的。能不能 Activex + push 模式 来做,ActiveX 是一个非常好的显示水晶报表的控件(里面包括了“打印”、“导出”功能按扭),用C#代码在后台重组数据源,能实现这种方式那是最好的。问题是怎么把数据源绑定到 ActiveX上
      

  8.   

    别外,报表服务器 Report Application Server 能不能单独安装到另一台机器,不要和Web服务器放到一起,通过 "rassdk://D:\report\Report_test1.rpt " 这种方式调用。奇怪:当我用在 .net 项目中添加 报表、CrystalReportViewer 、C#绑定数据源 的方式做是,RAS不启动也行,好你没作用,是不是这种方式不要用到RAS 服务??
      

  9.   

    当我用在 .net 项目中添加 报表、CrystalReportViewer 、C#绑定数据源 的方式做时,RAS不启动也行,好像没作用,是不是这种方式不要用到RAS 服务??我把整个程序移到没有装 RAS 的服务器上,也可正常运行(显示、导出均可)。是不是 项目中只要 CrystalDecisions.CrystalReports.Engine.dll、CrystalDecisions.Enterprise.Framework.dll 等一些 Dll就可以了? 那RAS主要在什么时候用到?
      

  10.   

    你的报表复杂到什么程度?
    我曾经做过财务报销单套打,
    可以分页,
    有空交流,
    msn: [email protected]
      

  11.   

    我一般导成pdf用Adobe Reader 6.0打印。
    一个DataSet1.xsd可以有多个element,把存储过程里面的字段填进去进可以啊。
      

  12.   

    当我用在 .net 项目中添加 报表、CrystalReportViewer 、C#绑定数据源 的方式做时,RAS不启动也行,好像没作用.我把整个程序移到没有装 RAS 的服务器上,也可正常运行(显示、导出均可)。是不是这种方式不要用到RAS 服务??
      

  13.   

    上面是在装有 Vs.net 包括水晶报表开发工具 中测试的,发布时,运行水晶报表要哪些环境,除了 .net frame work,要不要安装 RAS 或其它什么组件。
      

  14.   

    对于水晶报表部署在net中并不好解决,目前我见过最好的解决方案是Active+ASP的解决方式,就是
    搂主说的“拉”数据,这样以来,安全性(SQL语句通过URL传递),编程复杂性(要和ASP.NET实现单点登陆)都下降,但是却是功能很强大,很美观,客户端可以实现多种文档导出,预览,翻页,打印
    具体做法:
     1。设计一个水晶报表!
     2。ASP编写一个显示页面
     3。传递SQL语句和水晶报表的名称及连接属性到第二步的页面
    呵呵,就这么多!对了,水晶报表已经被收购了!
      

  15.   

    贴点代码:
    页面1:<html>
    <head >
    <title >请稍候........</title>
    <script>
    function go(strurl)
    {
    window.location="ReportView.asp?" + strurl ;
    }
    </script>
    </head><%
      'Response.Buffer=true
      strSql= Request.QueryString("SQL")
      reportname = Request.QueryString("ReportName")
      strurl=chr(34) & "SQL=" & strSql & "&ReportName=" & reportname & chr(34)
      'Response.Write (strurl)   
    %>
    </html> <%  Response.Write ("<script>go(" & strurl & ");</script>") %>
      

  16.   

    如果在.net中嵌类似一个ActiveX会有安全方面的问题 
    IE 的安全级别默认是不能访问ActiveX的 每次访问时都会弹出一个对话框必须把IE的安全级别调低些
      

  17.   

    to goody9807()  安全没问题,这个不用考虑太多,
    怎么样解决功能,与运行环境问题。
      

  18.   

    to roapzone(宗璞)说的 asp + ActiveX 是很好,很美观,能不能实现 asp.net + ActiveX的完美结合,希望大家多讨论啊
      

  19.   

    我在只安装 .net frame work1.1的机器上运行我的水晶报表测试程序,出现以下错误,我再在这台机器上安装水晶报表的开发工具,还是同样错误,好像是没有找找到CrystalReportViewer。---------------
    Object reference not set to an instance of an object. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  Stack Trace: [NullReferenceException: Object reference not set to an instance of an object.]
       CrystalDecisions.Web..get_7() +189
       CrystalDecisions.Web.CrystalReportViewer.OnInit(EventArgs e) +352
       System.Web.UI.Control.InitRecursive(Control namingContainer) +241
       System.Web.UI.Control.InitRecursive(Control namingContainer) +179
       System.Web.UI.Control.InitRecursive(Control namingContainer) +179
       System.Web.UI.Page.ProcessRequestMain() +174
      

  20.   

    打包得时候需要打包几个文件,
    1."document.all."+TextBox1.ClientID+".Text"
    2.如何部署包含水晶报表的程序(VS.NET 2002)
    ------------------------------------------------
    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
    注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过。
    KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,这样您的用户在查看报表时,就不会被要求注册他们的 Crystal版本。
    (3)运行库(*.msm)
    如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_CRT.msm 和 VC_STL.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录
    在VS.NET安装工程中,系统检测出来的依赖项只有 dotNETFXRedist_x86_chs.msm 和 Managed.msm这两个模块,其他的模块我们需要手动加入。
    -------------------------
    2、具体操作步骤:
    (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。-->完成
    (4)打开解决方案-->右键点击regwiz.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
    (5)生成解决方案(或直接按Ctrl+Shift+B)图示介绍:http://www.yesky.com/20030327/1659638.shtml
      

  21.   

    楼主安装了9.2以上版本就知道了。在Html自动有打印按钮的。
      

  22.   

    to 3gold(新丁) ,我的版本号是:9.2.0.448,怎么没有打印按钮??
      

  23.   

    当我打包发布到真实环境的服务器上时,报以下错:
    ------------
    因为未能在分配的时间内获得免费许可证,所以 Crystal Reports 作业失败。可以直接从 Crystal Decisions 或通过 Crystal Decisions 在线商店购买更多的许可证。 我的CrystalReport是正版的,上面的意思是不是说我的注册号已经过期了,怎么会出现这样的问题?
      

  24.   

    1、理解完全正确,用哪种方法要根据不同的情况来对待,用拉模式(pull)的好处是设计时就可以预览数据,而拉模式更灵活,可以在程序中根据用户角色权限等来显示不同的数据,另外用推模式发布报表时不需要对报表再做修改,数据库连接整个程序是统一的,而用拉模式一般需要修改数据库连接
    2、据说水晶报表10.0版中新增了可以在asp.net中用ActiveX控件来显示报表的功能,但还
    没有用过
      

  25.   

    我在安装有 VS.net 的机器中,则不会出现注册问题,是不是Vs.net中自带的 水晶报表 不用再注册就可以使用了?
      

  26.   

    打包得时候需要打包几个文件,
    1."document.all."+TextBox1.ClientID+".Text"
    2.如何部署包含水晶报表的程序(VS.NET 2002)
    ------------------------------------------------
    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
    注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过。
    KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,这样您的用户在查看报表时,就不会被要求注册他们的 Crystal版本。
    (3)运行库(*.msm)
    如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_CRT.msm 和 VC_STL.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录
    在VS.NET安装工程中,系统检测出来的依赖项只有 dotNETFXRedist_x86_chs.msm 和 Managed.msm这两个模块,其他的模块我们需要手动加入。
    -------------------------
    2、具体操作步骤:
    (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。-->完成
    (4)打开解决方案-->右键点击regwiz.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
    (5)生成解决方案(或直接按Ctrl+Shift+B)图示介绍:http://www.yesky.com/20030327/1659638.shtml
      

  27.   

    http://www.yesky.com/20030327/1659638.shtml
      

  28.   

    演练:部署 Web 解决方案
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/vsintro7/html/vbtskDeployingWebSolution.asp参照
    http://www.itonline.gd.cn/ittech/list.asp?id=617
    http://blog.csdn.net/younther/archive/2004/06/16/20185.aspx