NET中水晶报表的使用

来源:互联网 发布:百度呼叫中心源码 编辑:程序博客网 时间:2024/05/01 22:06

=====================================================

http://www.newasp.net/tech/net/12426.html

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

水晶报表注册码
注册号:6707437608
密码:AAP5GKS0000GDE100DS

二、使用CrystalReportViewer进行预览

CrystalReportViewer控件允许在应用程序中查看 Crystal Report。ReportSource 属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。

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

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

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

三、创建新报表

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

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

3.      在 Crystal Report 库中,选择下列选项之一:

·         使用报表专家 — 指导您完成报表的创建过程,并将您的选择添加到 Crystal Report Designer。

·         作为空白报表 — 打开 Crystal Report Designer。

·         来自于现有的报表 — 创建新报表,它与指定的另一报表设计相同。

注意   Crystal Report 库包含许多专家,可以指导您完成数个特定类型报表的创建工作。您可能希望使用专家来创建最初的报表,以确定哪种报表构造方法适合您的需要。

4.      单击“确定”按钮。

如果选择使用“报表专家”,便会出现“报表专家”对话框,并带有数据资源管理器。为每个文件夹选择所需数据,完成“报表专家”选项卡界面上的操作,然后单击“完成”来访问 Crystal Report Designer 和您的报表

四、是否需要动态设置数据源?

Crystal Reports 通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。

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

拉模型

在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports 本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。

推模型

相反,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。

四、从 ADO.NET 数据集制作报表

从数据库创建数据集对象

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

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

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

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

d.      接受默认名称 Dataset1.xsd。

这就创建了一个新的架构文件 (Dataset1.xsd),以后将用它来生成强类型数据集。该架构文件将显示在 ADO.NET 数据集设计器中。

2.      指定数据库位置:

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

b.      在“数据链接属性”对话框中,单击“提供程序”选项卡,然后选择一个提供程序(例如 Microsoft OLE DB Provider for SQL Server)。

c.      单击“连接”选项卡,然后指定您的数据库所在位置。在所需位置输入服务器和登录信息。

d.      单击“确定”按钮。

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

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

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

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

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

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

ADO.NET 数据集对象提供数据的描述,从它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“数据库专家”从 ADO.NET 数据集对象添加表。

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

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

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

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

3.      选择所需数据集对象。

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

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

五、动态改变数据源的代码

               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

8、运行程序

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

代码如下:
                Dim GetTextObject As TextObject

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

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

                GetTextObject.Text = "XXXX系统"

总结:水晶报表具有非常强大的功能,还可进行导出WORD、EXCEL、RTF等文件,还可生成复杂、漂亮图表,是进行WEB和WINDOWS报表开发的利器。

(此文部分资料来自MSDN)

Author:李洪根

E-MAIL:lihonggen0@163.com
==================================================================

http://51iter.com/wangzhan/aspnet/200604/wangzhan_27802_2.html

在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。
  这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。
  简介
  水晶报表可以由很多的方法得到,其中一个就是使用VS.Net来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序,那么你就不需要再安装其它软件了,因为他已经内嵌在VS.Net中了。
  优点:
  VS.Net水晶报表有下面一些主要的优点:


快速的报表开发

能够导出成为复杂的交互性图表

可以与其它控件一起在WebForm中使用

能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式

  结构:
  一些组件组成了水晶报表的二层结构,需要的Web应用有:
  客户端 :
  客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了
  服务器 :
  水晶报表引擎(Crystal Report Engine (CREngine.dll))
  通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将Asp.Net中的水晶报表转换成为普通HTML格式
  水晶报表设计器(Crystal Report Designer (CRDesigner.dll))
  水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。
  .rpt报表文件
  执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的.rpt例子。
  Data Source
  .rpt文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。
  水晶报表查看控件(Crystal Report Viewer web form Control (CRWebFormViewer.dll))
  水晶报表查看控件是一个WebForm控件,可以将它看成是一个在.aspx页面中存放报表的容器。 注意:在一些复杂的操作中,报表服务器与Web服务器可能不在同一物理主机上,Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。
  执行模式
  水晶报表取数据可以使用下面的方法实现:
  Pull 模式:
  被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。

Push 模式 :
  此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。
  报表类型:
  水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。
  Strongly-typed 报表 :
  当你将报表文件加入到项目中去时,它就变成了一个了“ strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。
  Un-Typed 报表 :
  这里的报表并不直接包含在项目中,因此称为‘un-typed’ 报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。
  其它注意事项
  尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。
  VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。为了避免这个,你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持)
  默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在 http://www.crystaldecisions.com/中购买许可证。
让我们感受一下----在Asp.net中使用一个现成的水晶报表文件

  让我们先感受一下在WebForm中使用水晶报表的感觉。   
1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。


 

  2) 调出水晶报表查看器控件的属性窗口  
  3) 点击[...]按钮查看"Data Binding"属性,并弹出了DataBinding窗口。
  4) 从左边的"Bindable属性”区中选择“Report Source”
  5) 选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:"C://Program Files//Microsoft Visual Studio.NET//Crystal Reports//Samples//Reports//General Business//World Sales Report.rpt",然后”确定“

  注意:文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。
  上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中: <%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %>


  以及: <CR:CRYSTALREPORTVIEWER>
id="CrystalReportViewer1"
runat="server" Width="350px" Height="50px"
ReportSource=' <%# "C://Program Files//Microsoft Visual Studio.NET//Crystal Reports//Samples//Reports//General Business//World Sales Report.rpt" %>'>
</CR:CRYSTALREPORTVIEWER>


   注意:在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的,它是: ReportSource=" <%# C:/xxxxx/xxx.rpt %>"


  这样是错误的,会出现错误信息,有两处错误:
DataBind中要有双引号,因此外部只能用单引号
目录分隔符号不能使用"/",必须使用"//"

  必须按照使用本文介绍的格式来手动修改,这也算是VS.Net的一个Bug吧。
  6) 在Page_Load方法中调用DataBind方法。(代码为VB.Net)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
DataBind()
End Sub


  7)保存并编译你的页面。 现在,你就有一个内嵌水晶报表的WebForm页面了。
  注意:实际开发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的,也可能是我使用的是Windows.Net操作系统的原因。

=======================

http://51iter.com/wangzhan/aspnet/200604/wangzhan_27803.html

命名空间为:using CrystalDecisions.Shared        

private void BuildReportViewerParameters(CrystalDecisions.Web.CrystalReportViewer rptViewer, Hashtable ParamTable)
        {
            //定义报表视图的参数的方法
            ParameterFields ParamFields = new ParameterFields();
            foreach (object key in ParamTable.Keys)
            {
                ParameterField ParamField = new ParameterField();
                ParameterValues ParamValues = new ParameterValues();
                ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
                ParamValue.Value = ParamTable[key].ToString();
                ParamValues.Add(ParamValue);
                ParamField.ParameterFieldName = key.ToString();
                ParamField.CurrentValues = ParamValues;
                ParamFields.Add(ParamField);
            }
            rptViewer.ParameterFieldInfo = ParamFields

 }

        private void BuildReportClassParameters(CrystalDecisions.CrystalReports.Engine.ReportClass rpt, Hashtable ParamTable)
        {
            //定义报表类的参数的方法
            foreach (object key in ParamTable.Keys)
            {
                ParameterValues ParamValues = new ParameterValues();
                ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
                ParamValue.Value = ParamTable[key].ToString();
                ParamValues.Add(ParamValue);
                rpt.DataDefinition.ParameterFields[key.ToString()].ApplyCurrentValues(ParamValues);
            }
        }
        
        protected void BuildReportParameters(CrystalDecisions.Web.CrystalReportViewer rpt,Hashtable ParamTable)
        {
            //定义报表参数的方法
            ParameterFields ParamFields = new ParameterFields();

            foreach(object key in ParamTable.Keys

 {
                ParameterField ParamField;
                ParameterValues ParamValues;
                ParameterDiscreteValue ParamValue;

                ParamField = new ParameterField();
                ParamValues = new ParameterValues();
                ParamValue = new ParameterDiscreteValue();

                ParamValue.Value = (string)ParamTable[key];
                ParamValues.Add(ParamValue);
                ParamField.ParameterFieldName=(string)key;
                ParamField.CurrentValues = ParamValues;
                ParamFields.Add(ParamField);
            }
            rpt.ParameterFieldInfo = ParamFields;
        }  


然后再你的需要调用参数的地方,加如下引用:

private void Button_output_Click(object sender, System.EventArgs e

{
            CrystalDecisions.Shared.TableLogOnInfo logInfo = new CrystalDecisions.Shared.TableLogOnInfo();  //设置报表的登录信息
            logInfo.ConnectionInfo.ServerName = "ANGEL";  //设置报表与库的连接信息
            logInfo.ConnectionInfo.DatabaseName = "KaoQin";
            logInfo.TableName = "Emstatistic";
            logInfo.ConnectionInfo.UserID = "sa";
            logInfo.ConnectionInfo.Password = "";
            CrystalReportViewer1.ReportSource = Server.MapPath("cr_aa.rpt"); //指定报表的数据源
            CrystalReportViewer1.LogOnInfo.Add(logInfo);//对参数进行赋什值
    //        CrystalReportViewer1.DataBind();

            //声明变量并获取导出选项
            cr_aa myReport = new cr_aa();  //定义一个名为myReport的报表
            myReport.Database.Tables[0].ApplyLogOnInfo(logInfo);  
            CrystalReportViewer1.ReportSource = myReport;
            CrystalReportViewer1.DataBind();   

            Hashtable t = new Hashtable();    

t.Add("p_st_month", Textmonth.Text);  //为参数赋值
            BuildReportParameters(CrystalReportViewer1, t);  //调用建立报表参数的方法  
            BuildReportViewerParameters(CrystalReportViewer1, t);   //给报表浏览器添加参数
            BuildReportClassParameters(myReport, t);  //给报表类添加参数   

            CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions();
            //设置导出格式
            myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
            myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;
            //设置磁盘文件选项
            diskOpts.DiskFileName = "C://Documents and Settings//Administrator//My Documents//kaoqin_rpt.xls";   
            myReport.ExportOptions.DestinationOptions = diskOpts;
            myReport.Export();
            Response.Write("<script language='javascript'>alert('您已经将报表成功输出到Excel文件'); window.location.href='customRpt.aspx';</" + "script>")

 }

==============================================================================

http://www.ccw.com.cn/htm/center/prog/02_7_5_6.asp

在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。 一、水晶报表简介 水晶报表可以由很多的方法得到,其中一个就是使用VS.Net来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序,那么你就不需要再安装其它软件了,因为他已经内嵌在VS.Net中了。 二、水晶报表的优点 VS.Net水晶报表有下面一些主要的优点:

  • 快速的报表开发
  • 能够导出成为复杂的交互性图表
  • 可以与其它控件一起在WebForm中使用
  • 能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式
三、水晶报表的结构 一些组件组成了水晶报表的二层结构,需要的Web应用有: 1、客户端 : 客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了 2、服务器 :
  • 水晶报表引擎(Crystal Report Engine (CREngine.dll))
通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将Asp.Net中的水晶报表转换成为普通HTML格式
  • 水晶报表设计器(Crystal Report Designer (CRDesigner.dll))
水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。
  • .rpt报表文件
执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的.rpt例子。
  • Data Source
.rpt文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。
  • 水晶报表查看控件(Crystal Report Viewer web form Control (CRWebFormViewer.dll))
水晶报表查看控件是一个WebForm控件,可以将它看成是一个在.aspx页面中存放报表的容器。 注意:在一些复杂的操作中,报表服务器与Web服务器可能不在同一物理主机上,Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。 四、执行模式 水晶报表取数据可以使用下面的方法实现: Pull 模式: 被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。 Push 模式 : 此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。 五、报表类型 水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。 Strongly-typed 报表 : 当你将报表文件加入到项目中去时,它就变成了一个了“ strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。 Un-Typed 报表 : 这里的报表并不直接包含在项目中,因此称为‘un-typed’ 报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。 六、其它注意事项 尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。 VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。为了避免这个,你不是不在 http://www.crystaldecisions.com/这里注册此产品。 (好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持) 默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在 http://www.crystaldecisions.com/中购买许可证。 让我们感受一下——在Asp.net中使用一个现成的水晶报表文件 1) 从WebForm工具栏中拖动水晶报表查看器控件(Crystal Report Viewer)至.aspx页面中。

2) 调出水晶报表查看器控件的属性窗口 3) 点击[...]按钮查看"Data Binding"属性,并弹出了DataBinding窗口。 4) 从左边的"Bindable属性”区中选择“Report Source” 5) 选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:"C://Program Files//Microsoft Visual Studio.NET//Crystal Reports//Samples//Reports//General Business//World Sales Report.rpt",然后“确定”。 注意:文件”World Sales Report.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。 上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中:  <%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %> 以及: <CR:CRYSTALREPORTVIEWER> id="CrystalReportViewer1" runat="server" Width="350px" Height="50px" ReportSource=' <%# "C://Program Files//Microsoft Visual Studio.NET//Crystal Reports//Samples//Reports//General Business//World Sales Report.rpt" %>'> </CR:CRYSTALREPORTVIEWER> 注意:在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的,它是:  ReportSource=" <%# C:/xxxxx/xxx.rpt %>" 这样是错误的,会出现错误信息,有两处错误:
  • DataBind中要有双引号,因此外部只能用单引号
  • 目录分隔符号不能使用"/",必须使用"//"
必须按照使用本文介绍的格式来手动修改,这也算是VS.Net的一个Bug吧。 6) 在Page_Load方法中调用DataBind方法。(代码为VB.Net) Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) DataBind() End Sub 7)保存并编译你的页面。 现在,你就有一个内嵌水晶报表的WebForm页面了。 注意:实际开发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的,也可能是我使用的是Windows.Net操作系统的原因。

============================

http://203.191.151.199/develop/2005-7-23/499/default.aspx

author: zsww  From: cnblogs

初用水晶报表(vs .net2003集成,版本Version=9.1.5000.0)
装好后要注册 注册号:6707437608 密码:AAP5GKS0000GDE100DS


想要在.aspx文件中使用水晶报表
1.先新建文件webform1.aspx 在页面拖入组件CrystalReportViewer 生成代码

2.在项目的同个文件夹中新建文件crystalreport1.rpt? 在字段资源管理器的数据库字段“添加数据库” 请使用oledb连接 从而选择你所要在报表中显示的数据表(有向导)

3.在webform1.aspx.cs主要代码如下:


protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
ReportDocument oRpt = new ReportDocument();
string RptDir="f://bbs//test//crystal//crystalreport1.rpt"; //crystalreport1.rpt文件所在的绝对路径
oRpt.Load(RptDir);

 

//设置logoninfo参数,注意这里如果不设?编译时最容易出现“登陆失败”的错误!
logOnInfo.ConnectionInfo.ServerName = "服务器名";
logOnInfo.ConnectionInfo.DatabaseName = "数据库名";
logOnInfo.ConnectionInfo.UserID = "用户名";
logOnInfo.ConnectionInfo.Password = "密码";
oRpt.Database.Tables [0].ApplyLogOnInfo(logOnInfo);

//建立.rpt文件与crystalreportviewer文件之间的连接
CrystalReportViewer1.ReportSource=oRpt;
}

4.//生成pdf文档 在以上代码中加入
 ExportOptions crExportOptions=new ExportOptions();
DiskFileDestinationOptions crDiskFileDestinationOptions=new DiskFileDestinationOptions();
crDiskFileDestinationOptions.DiskFileName="f://bbs//test//crystal//crystalreport1.pdf";
crExportOptions=oRpt.ExportOptions ;
crExportOptions.DestinationOptions=crDiskFileDestinationOptions;
crExportOptions.ExportDestinationType =ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType =ExportFormatType.PortableDocFormat ;

orpt.export();
oRpt.Close();

5.//读取报表导出的内容并传到客户端?继续加入以下代码
Response.ClearContent();
Response.ClearHeaders ();
Response.ContentType ="application/pdf";
Response.WriteFile("f://bbs//test//crystal//crystalreport1.pdf");

Response.Flush();
Response.Close();?
 


以上完全是个人使用总结 如有不对或可以改进的地方 请大家指正!!!

 

Add by : DevEduSiteMaster (2005-7-23:09:46)

==============================

http://www.cnblogs.com/HD/archive/2006/09/25/514112.html

 

[.net]官方水晶报表的使用以演示下载
水晶报表

使用 C# 和 C++.NET 开发的 .NET 应用程序实例列表
----------------------------------

概述

本文档列出了 Crystal Decisions 技术支持网站上所有可用的,使用 C# 和 C++.NET 开发的 .NET 应用程序实例列表。本文档还给出了每一个程序的描述和下载链接。随着新程序加入我们的支持站点,本文档将不断更新。
----------------------------------

目录

VISUAL C# .NET

一、数据库连通性
  1、csharp_web_simplelogonengine.exe
  2、csharp_web_simplelogonviewer.exe
  3、csharp_win_dbengine.exe
  4、csharp_win_dbviewer.exe

二、ADO.NET
  1、csharp_web_adonet.exe
  2、csharp_win_adodotnet.exe

三、导出
  1、csharp_web_export.exe
  2、csharp_win_export.exe
  3、csharp_win_exporttopdf.exe

四、格式化
  1、csharp_win_sortfields.exe

五、公式
  1、csharp_win_dynamic_report_formula.exe

六、参数字段
  1、csharp_web_discreteparams.exe
  2、csharp_web_rangeparams.exe
  3、csharp_web_sub_daterangeparam.exe
  4、csharp_win_discreteparam.exe
  5、csharp_win_multirangeparam.exe
  6、csharp_win_paramengine.exe
  7、csharp_win_paramsub.exe

七、打印报表
  1、csharp_win_printtoprinter.exe

八、查看报表
  1、csharp_web_simplepreviewreport.exe

九、报表 Web 服务
  1、csharp_web_serverfilereports.exe
  2、csharp_win_serverfilereports.exe

十、子报表
  1、csharp_web_accesssubreport.exe
  2、csharp_web_sub_daterangeparam.exe
  3、csharp_win_paramsub.exe
  4、csharp_win_subreport_basic.exe
  5、csharp_win_subreport_logon.exe

十一、Windows/Web 查看器 (选项/事件)
  1、csharp_win_viewer_events.exe


Visual C++ .NET

十二、参数
  1、cppnet_win_paramengine.exe

十三、数据库问题
  1、cppnet_win_dbengine.exe
  2、cppnet_win_dbviewer.exe

十四、子报表
  1、cppnet_win_subreport_basic.exe

十五、联系 Crystal Decisions 以获得技术支持
----------------------------------

一、数据库连通性

1、csharp_web_simplelogonengine.exe
该 C# .NET web 程序实例示范了如何使用 ReportDocument 类的数据库表 (database table) 对象建立连接,以登录安全的 SQL 数据库。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_simplelogonengine.exe.asp

2、csharp_web_simplelogonviewer.exe
该 C# .NET web 程序实例示范了如何使用 CrystalReportViewer 控件的 LogonInfo 属性建立连接,以登录安全的数据库。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_simplelogonviewer.exe.asp

3、csharp_win_dbengine.exe
该 C# .NET Windows 程序实例示范了如何登录安全的 SQL 数据库。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_dbengine.exe.asp

4、csharp_win_dbviewer.exe
该 C# .NET Windows 程序实例示范了如何使用 Windows 窗体查看器 (Windows Form viewer) 对象模型将报表连接到安全的数据库。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_dbviewer.exe.asp
----------------------------------

二、ADO.NET
1、csharp_web_adonet.exe
该 C# .NET web 程序实例示范了如何在运行时构造和组装 ADO.NET 数据集,并将它传递给报表。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_adonet.exe.asp

2、csharp_win_adodotnet.exe
该 C# .NET Windows 程序实例示范了如何在运行时构造和组装 ADO.NET 数据集 (dataset),并将它传递给报表。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_adodotnet.exe.asp
----------------------------------

三、导出

1、csharp_web_export.exe
该 C# .NET web 程序实例示范了如何将报表导出成多种文件格式(比如:.DOC 或者 .XLS)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET 2002) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_export.exe.asp

2、csharp_win_export.exe
该 C# .NET Windows 程序实例示范了如何将你的报表导出成多种格式。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_export.exe.asp

3、csharp_win_exporttopdf.exe
该 C# .NET Windows 程序实例示范了如何将你的报表导出成便携文档格式 (Portable Document Format) (PDF)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_exporttopdf.exe.asp
----------------------------------

四、格式化

1、csharp_win_sortfields.exe
该 C# Windows 程序实例示范了如何在运行时改变报表的主排序字段 (Sort Field) 和字段排序方向 (Sort Field direction)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_sortfields.exe.asp
----------------------------------

五、公式

1、csharp_win_dynamic_report_formula.exe
该 C# .NET Windows 程序实例示范了如何根据用户输入创建动态报表。程序用空白公式字段指定那一个数据库字段出现在报表里,并指定分组所依据的字段。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_dynamic_report_formula.exe.asp
----------------------------------

六、参数字段

1、csharp_web_discreteparams.exe
该 C# .NET web 程序实例示范了如何将多个数值传递给离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_discreteparams.exe.asp

2、csharp_web_rangeparams.exe
该 C# web 程序实例示范了如何将多个数值传递给一个离散参数字段 (discrete parameter field)。此外,程序还将初始值和最终值传递给范围参数字段 (range parameter field)。本程序适用于 Visual Studio .NET 2002 内置的水晶报表 (Crystal Reports for Visual Studio .NET 2002) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_rangeparams.exe.asp

3、csharp_web_sub_daterangeparam.exe
该 C# web 程序实例示范了如何通过 CrystalReportViewer 将日期范围传递给子报表里的日期范围参数 (date range parameter)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_sub_daterangeparam.exe.asp

4、csharp_win_discreteparam.exe
该 C# .NET Windows 程序实例示范了如何使用查看器对象模型 (Viewer object model) 将多个数值传递给一个离散参数字段 (discrete parameter field)。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_discreteparam.exe.asp

5、csharp_win_multirangeparam.exe
该 C# .NETWindowss 程序实例示范了如何将多个数值传递给一个范围参数 (range parameter)。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_multirangeparam.exe.asp

6、csharp_win_paramengine.exe
该 C# Windows 程序实例示范了如何使用引擎对象模型 (engine object model) 将多个数值传递给一个离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_paramengine.exe.asp

7、csharp_win_paramsub.exe
该 C# Windows 程序实例示范了如何将日期范围值传递给子报表的参数(使用主报表参数字段定义 (Parameter Field Definitions) 集合)。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_paramsub.exe.asp
----------------------------------

七、打印报表

1、csharp_win_printtoprinter.exe
该 C# Windows 程序实例示范了如何在运行时使用引擎对象模型 (engine object model) 将报表直接打印到某一打印机。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_printtoprinter.exe.asp
----------------------------------

八、查看报表

1、csharp_web_simplepreviewreport.exe
该 C# web 程序实例示范了在 Web 窗体查看器 (Web Forms viewer) 中加载报表的六种方法。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_simplepreviewreport.exe.asp
----------------------------------

九、报表 Web 服务

1、csharp_web_serverfilereports.exe
该 C# web 程序实例示范了如何使用服务器文件的报表 Web 服务 (Server File Report web services)。程序实例在树视图控件 (Tree View control) 里列出 web 服务器上的文件夹和报表。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_ServerFileReports.exe.asp

2、csharp_win_serverfilereports.exe
该 C# Windows 程序实例示范了如何使用服务器文件的报表 Web 服务 (Server File Report web services)。程序利用了 ServerFileReportManager 和 ServerFileReportService Web 服务,并在树视图控件 (Tree View control) 里列出 web 服务器上的文件夹和报表。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_serverfilereports.exe.asp
----------------------------------

十、子报表

1、csharp_web_accesssubreport.exe
该 C# web 程序实例示范了如何访问内嵌在报表里的子报表,并返回子报表的名称。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_accesssubreport.exe.asp

2、csharp_web_sub_daterangeparam.exe
该 C# web 程序实例示范了如何通过 CrystalReportViewer 将日期范围参数 (date range parameter) 传递给子报表。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_web_sub_daterangeparam.exe.asp

3、csharp_win_paramsub.exe
该 C# Windows 程序实例示范了如何将日期范围值传递给子报表的参数(使用主报表参数字段定义 (Parameter Field Definitions) 集合)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_paramsub.exe.asp

4、csharp_win_subreport_basic.exe
该 C# Windows 程序实例示范了如何在运行时访问内嵌在主报表里的子报表。http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_subreport_basic.exe.asp

5、csharp_win_subreport_logon.exe
该 C# Windows 程序实例示范了如何在运行时登录子报表。http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_subreport_logon.exe.asp
----------------------------------

十一、Windows/Web 查看器 (选项/事件)

1、csharp_win_viewer_events.exe
该 C# .NET Windows 程序实例示范了如何从 Windows 窗体查看器对象 (Windows Form viewer object) 捕获事件。当你深化组,刷新报表,改变当前页,改变缩放级别,以及搜索文本时,信息框将显示附加说明。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_viewer_events.exe.asp
----------------------------------

Visual C++ .NET

十二、参数

1、cppnet_win_paramengine.exe
该 C++ Windows 程序实例示范了如何使用引擎对象模型 (engine object model) 将多个数值传递给一个离散参数字段 (discrete parameter field)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cppnet_win_paramengine.exe.asp
----------------------------------

十三、数据库问题

1、cppnet_win_dbengine.exe
该 C++ .NET Windows 程序实例示范了如何登录安全的 SQL 数据库。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cppnet_win_dbengine.exe.asp

2、cppnet_win_dbviewer.exe
该 C++ .NET Windows 程序实例示范了如何使用 Windows 窗体查看器 (Windows Form viewer) 对象模型将报表连接到安全的 SQL 数据库。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cppnet_win_dbviewer.exe.asp
----------------------------------

十四、子报表

1、cppnet_win_subreport_basic.exe
该 C++ Windows 程序实例示范了如何在运行时访问子报表(内嵌在主报表里的)。本程序适用于 Visual Studio .NET 内置的水晶报表 (Crystal Reports for Visual Studio .NET) 及其更新版本。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cppnet_win_subreport_basic.exe.asp
----------------------------------


=============================================================

http://hi.baidu.com/_raymond/blog/item/6c17bd822cb379bf6d8119d2.html

水晶报表的初级使用
2007-02-03 09:15

 
 
  • 水晶报表 Web 查看器文件夹 NTFS 权限的问题
    (1)错误提示:
    “/WebApplication1”应用程序中的服务器错误。
      登录失败。 
      说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
      异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
    (2)相关文件夹:
    VS.NET Crystal Reports: C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers
    Crystal Reports 9.2: C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers  
  • 水晶报表文件所在的文件夹,或者导出时的目标文件夹 NTFS 权限的问题
    (1)错误提示:
    登录失败。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
    异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。  
  • 设置上述文件夹的“安全”,即 NTFS 权限:
    最简单的办法是给 Everyone 用户加“完全控制”权限!
    (1)为当前用户,如:Administrator,,添加“写入”权限;
    (2)为用户 ASPNET、SYSTEM、匿名用户(通常为 IUSR_MACHINENAME)、经过身份验证的请求用户添加“写入”权限。  
  • 在PULL模式下使用水晶报表  

using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;

{

   TableLogOnInfo log = new TableLogOnInfo();
   log.ConnectionInfo.ServerName = "wudi";
   log.ConnectionInfo.DatabaseName = "YabOA";
   log.ConnectionInfo.UserID = "asp.net";
   log.ConnectionInfo.Password = "exit";
   ReportDocument rd = new ReportDocument();
   string RptPath = null;
   
   RptPath =Server.MapPath("CrystalReport2.rpt");
   rd.Load(RptPath);
   rd.Database.Tables[0].ApplyLogOnInfo(log);

   this.CrystalReportViewer1.ReportSource = rd;

   this .CrystalReportViewer1.DataBind();

}

  • 在PUSH模式下使用  
    1. 生成一个数据集文件,然后创建要查询信息的结构(可从数据库中托经来),然后生成项目  
    2. 添加Crystal Reports组件,并设置相关信息,字段连接到刚才生成的数据集文件中的表(如果刚才创建后没有生成项目,这里看不到那个数据集文件的表格)  
    3. 代码如下:  

using CrystalDecisions.Shared;
using System.Configuration;

{

  string connectString = "server=.;user id=ASP.NET;initial    catalog=Yaboa;password=exit";
   SqlConnection MyConnection = new SqlConnection(connectString);
   MyConnection.Open();
   string sqlstring = "select xh,sh,qy from baseinfoVwOfZb";

   SqlDataAdapter MyCommand = new SqlDataAdapter(sqlstring,MyConnection);
   DataSet ds = new DataSet();
   MyCommand.Fill(ds,"baseinfoVwOfZb");   
   YabOA.CrystalReport1 cr1 = new YabOA.CrystalReport1();      
   cr1.SetDataSource(ds.Tables["baseinfoVwOfzb"]);
   this.CustomerOrderCRViewer.ReportSource = cr1;

}

  • 说明  

在web中和在windowsApplication中水晶报表的使用略有不同。在Web中经常会遇到权限的问题。

                                                                                                                          from:technow

原创粉丝点击