水晶报表只能与数据源进行连接,可以先把调查数据存入数据库中,再调用水晶报表进行显示,最好用其它控件如chart

解决方案 »

  1.   

    海波.NET
    问题:
    如何用水晶报表来表现调查问卷的统计结果(WinForm和WebForm)?
    ——————————————————————————————————————
    解决方案:
    一、设计水晶报表
    1、在“数据库连接向导”指引下选择数据库和表,并添加字段、分组、汇总等……
    2、插入图表,实现饼图等……
    ——————————————————————————————————————
    二、显示水晶报表:
    [HTML]我们采用下面的几步使用Push模式执行水晶报表:
    1. 设计一个DataSet
    2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet。
    3. 在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
    4. 在代码中访问数据库并把数据存入DataSet
    5. 调用DataBind方法。
     设计一个DataSet
    1) 右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”  
    2) 从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)。
    3) 此时在数据集中就会有一个Stores表的结构图。 
    - .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。
    创建 .rpt 文件 :
    4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
    5)建立.rpt文件之后,右击“详细资料”-->"添加/删除数据库“
    6) 在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--"DataSet1“,选择”Stores“表。
    7) 将”Stores"表添加到“选定的表”中,点击“OK”
    8) 使用PULL模式下的方法,建立一个WebForm
    建立一个Crystal Report Viewer 控件
    9) 建立一个Crystal Report Viewer 控件,并设定其属性,此处与PULL模式下是一致的。
    Code Behind 代码:
    10) 在Page_Load方法中使用下面的子函数:
    VB.Net代码:
        Sub BindReport()
            Dim myConnection As New SqlClient.SqlConnection() 
            myConnection.ConnectionString= "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes"
            Dim MyCommand As New SqlClient.SqlCommand()
            MyCommand.Connection = myConnection
            MyCommand.CommandText = "Select * from Stores"
            MyCommand.CommandType = CommandType.Text
            Dim MyDA As New SqlClient.SqlDataAdapter()
            MyDA.SelectCommand = MyCommand
            Dim myDS As New Dataset1()
           '这就是我们在设计模式上使用的DataSet     
            MyDA.Fill(myDS, "Stores")   
            '你不得不使用与你前面DataSet相同名字。
            Dim oRpt As New CrystalReport1()
             ' 水晶报表绑定
            oRpt.SetDataSource(myDS)
             ' 设定水晶报表的ReportSource
            CrystalReportViewer1.ReportSource = oRpt
        End Sub
    C#代码:
    private void BindReport()
    {
        string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
        CrystalReport1 oCR = new CrystalReport1();
        Dataset1 ds = new Dataset1();
        SqlConnection MyConn = new SqlConnection(strProvider);
        MyConn.Open();
        string strSel = "Select * from Stores";
        SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
        MyAdapter.Fill(ds,"stores");
        oCR.SetDataSource(ds);
        this.CrystalReportViewer1.ReportSource = oCR;
    }
     
    注意:在上面的代码中,你得注意一下oRpt是"Strongly Typed"的报表文件。如果你需要使用"UnTyped"报表,你得使用ReportDocument对象,然后再调用报表文件。
     运行你的程序。 
    11) 运行你的程序
      

  2.   

    大家一起到这里支持一下!!!
    http://expert.csdn.net/Expert/TopicView1.asp?id=2291055
    CSDN 开个 Crystal Report 版吧!!!&&&我与水晶报表……
    haibodotnet 海波.NET