2013-05-15 82 views
0

我在C#中使用VS 2012表達式編碼,並在將數據從數據集(我使用SQL Server CE)添加到reportview時遇到問題。我的代碼是這樣的:在VS 2012 express中添加SQL Server CE數據集到reportviewer C#

private void button1_Click(object sender, EventArgs e) 
{ 
    System.Data.SqlServerCe.SqlCeConnection con; 
    System.Data.SqlServerCe.SqlCeDataAdapter da; 
    DataSet ds1; 

    con = new System.Data.SqlServerCe.SqlCeConnection(); 
    con.ConnectionString = ConfigurationManager.ConnectionStrings["MySalon.Properties.Settings.MySalonConnectionString"].ToString(); 

    string sql = "SELECT * FROM CUSTOMER_PAYMENTS;"; 

    try 
    {  
     con.Open(); 
     da = new System.Data.SqlServerCe.SqlCeDataAdapter(sql, con) 
     ds1 = new DataSet(); 

     da.Fill(ds1, "DayRep"); 

     ReportDataSource datasource; 

     datasource = new ReportDataSource("DayRep", ds1.Tables[0]); 

     reportViewer1.LocalReport.DataSources.Clear(); 
     reportViewer1.LocalReport.DataSources.Add(datasource); 
     con.Close(); 
     reportViewer1.LocalReport.Refresh(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    }   
} 

我可以看到,數據源有數據,但按下按鈕仍然空白時報告(沒有錯誤只是空白)。

回答

1

嘗試添加以下代碼行:

reportViewer1.LocalReport.ReportEmbeddedResource = 
    "Your_Name_Of_Project.Name_Of_Your_Report.rdlc"; 

它應該是,如果你創建了自己的.rdlc報告文件,以指示的ReportViewer從哪裏取數據。

另外,這行代碼在哪裏?

this.reportViewer1.RefreshReport(); 

通常,它由工作室添加(如果您使用它編碼)。它應該在代碼的最後,僅在try塊的末尾。無論如何,這是「必須擁有」,沒有它,你的報告將保持空白。

而且,在我看來,你應該更換這行代碼:

ds1 = new DataSet(); 

這一個:

ds1 = new DataSet("myDataSet"); //for exmaple, so to make dataSet have some name 

,然後重寫這行代碼:

datasource = new ReportDataSource("DayRep", ds1.Tables[0]); 

下一個:

dataSource = new ReportDataSource("myDataSet", ds1.Tables[0] as DataTable); 

UPDATE

好了,你也沒有必要通過的ReportViewer安裝RDLC teamplate運行和顯示報告。

由於被告知here,(在例子),你可以把它寫這樣

// Set Processing Mode 

    reportViewer.ProcessingMode = ProcessingMode.Local; 

    // Set RDL file 

    using (FileStream stream = new FileStream("report1.rdlc", FileMode.Open)) 
    { 
     reportViewer.LocalReport.LoadReportDefinition(stream); 
    } 

因此,該報告將在repoerViewer加載。這裏的主要問題是我有一些.rdlc報告,所以我現在可以加載它們。要在沒有模板的情況下創建它們,您可以使用另一種方法,以編程方式創建它們 - 也許這個article可以幫助您。另外,請在MSDN上查看here

UPD2 您可以使用此link看看的rdlc報告文字版。但請記住,您無法將這個rdlc正好加載到您的reportViewer中,並查看您想要的數據。 .rdlc只是一個例子,每個報告都應該由項目開發者創建。主要原因是.rdlc我已經使用DataSet,因爲它沒有從dataBase中獲取數據。所以,我認爲通過這個rdlc來查看的唯一原因只有通過了解。要成功創建.rdlc報告,您應該使用我之前介紹過的方法。要獲取更多信息,您可以嘗試在谷歌中搜索「以編程方式生成報告定義」,或者找到一些機會在IDE中創建報告,就像Visual Studio一樣。

+0

hm -m是的refreshreport行是在我的代碼在盡頭儘管我還沒有創建任何rdlc文件。我只是將報告查看器添加到勝利表單中。我需要做些什麼來創建rdlc文件。我認爲我需要報告模板創建它們,但如何將其添加到快速版? –

+0

請參閱答案的更新。 –

+0

非常感謝您的回覆!我將代碼更改添加到我的項目中。如果我理解正確,我需要有一個有效的rdlc文件,所以創建一個空文件 .rdlc不會給我任何回報。感謝您的鏈接,他們非常有幫助。如果你有任何時間請給我一個rdlc文件的電子郵件。再次非常感謝! –

相關問題