我在數據庫專家里設置ado.net連接指向一個daset(該dataset與一.xsd,我用sql語句動態生產兩個表,填充到dataset中)文件關聯,然后設計完報表的格式,可運行時老是讓輸入數據庫連接信息,怎么解決?
3 个解决方案
我們采用下面的幾步使用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;
haibodotnet(海波.NET) 支持你當CrystalReport的斑竹,加油~~~
在數據庫上右建把驗證數據庫的前的勾去調,這么不是每次運行提示輸入數據庫連接信息