2011-06-30 68 views
0

我將一個ASP.Net應用程序從VS 2003轉換爲VS 2005作爲起點。該應用程序使用Crystal Reports並使用ADO.Net綁定到強類型數據集(XSD)。我不得不改變一些Crystal Code來使用C​​rystal的新版本。現在,當我運行該頁面時,報告生成了,但沒有填充任何字段。我看到很多人遇到同樣的問題,但沒有真正的解決方案。我決定創建一個全新的項目,將同樣的事情從VS 2003到2005的對話中刪除,作爲問題的一個可能原因。所以我的示例程序有一個運行查詢的按鈕,填充數據集並將其分配給報告。該報告僅顯示標題。代碼如下。我不知道接下來要嘗試什麼。Crystal Reports和強類型數據集產生空報告

DataSet1 ds = new DataSet1(); 

    SqlConnection conn = 
     new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

    SqlDataAdapter da = new SqlDataAdapter("select * from mytable", conn); 
    da.Fill(ds); 

    ReportDocument rep = new ReportDocument(); 
    rep.Load(Server.MapPath("crystalreport.rpt")); 
    rep.SetDataSource(ds); 

    CrystalReportViewer1.ReportSource = rep; 
    CrystalReportViewer1.RefreshReport(); 

我還基於相同的MYTABLE表創建DataSet1.XSD。除了報告中的字段沒有填充外,我沒有發現任何錯誤或任何錯誤。

回答

1

需要一些調試才能確定它爲什麼不適合你。您是否在調試會話中查看了結果數據集,並查看它是否填寫正確?

下面是一個很好的工作方法的例子。

SqlConnection cnn; 
string connectionString = null; 
string sql = null; 

connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user id=USERNAME;password=PASSWORD;"; 
cnn = new SqlConnection(connectionString); 
cnn.Open(); 
sql = "select * from mytable"; 
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn); 
DataSet1 ds = new DataSet1(); 
dscmd.Fill(ds, "mytable"); 
cnn.Close(); 

CrystalReport1 objRpt = new CrystalReport1(); 
objRpt.SetDataSource(ds.Tables[1]); 
crystalReportViewer1.ReportSource = objRpt; 
crystalReportViewer1.Refresh(); 
+0

乍一看,你的代碼與我的幾乎一樣,除了一個小細節之外......你可以在SetDataSource中指定顯式表格,我將報表發送給整個DataSet。一旦我將其更改爲表引用,所有內容都很好地填充。謝謝。 –

+0

我想這可能是它不工作的關鍵。我是一個大副本/粘貼的人,所以我喜歡有完整的示例來構建,因爲我總是忘記了這樣的小細節。很高興幫助。 –

相關問題