水晶報表(winform)怎么設置數據源為一dataset(可以是動態生成的嗎?還是必需是一個.xsd文件)


我在數據庫專家里設置ado.net連接指向一個daset(該dataset與一.xsd,我用sql語句動態生產兩個表,填充到dataset中)文件關聯,然后設計完報表的格式,可運行時老是讓輸入數據庫連接信息,怎么解決?

3 个解决方案

#1


我們采用下面的幾步使用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 ReportDocument()
         ' 水晶報表綁定
        oRpt.SetDataSource(myDS)
         ' 設定水晶報表的ReportSource
        CrystalReportViewer1.ReportSource = oRpt
    End Sub
C#代碼:
private void BindReport()
{
    string strProvider = "Server=(local);DataBase=pubs;UID=sa;PWD=";
    ReportDocument oCR = new ReportDocument();
    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) 運行你的程序
備注:
Dim oRpt As New ReportDocument()
1、在菜單“項目”-〉“添加引用”:CrystalDecisions.CrystalReports.Engine
2、在源代碼里添加引用:using CrystalDecisions.CrystalReports.Engine;

#2


haibodotnet(海波.NET) 支持你當CrystalReport的斑竹,加油~~~

#3


在數據庫上右建把驗證數據庫的前的勾去調,這么不是每次運行提示輸入數據庫連接信息

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com