2011-04-21 135 views
0

我試圖傳遞的從C#通過水晶傳遞到MS SQL存儲過程生成2個值報告在晶體報告傳遞多個值

到目前爲止我有此代碼

string username = Context.User.Identity.Name; 
string date = DateTime.Now.ToShortDateString() ; 
ReportDocument crystalReport = new ReportDocument(); 

crystalReport.Load(Server.MapPath(@"..\admin\CrystalReport1.rpt")); 
crystalReport.SetParameterValue("@Username", username); 
crystalReport.SetParameterValue("@Date", date); 

crystalReport.SetDatabaseLogon("", "", @"dennislaptop-pc\SQLEXPRESS", "healthylifestyledb"); 
CrystalReportViewer1.ReportSource = crystalReport; 

上述代碼是在水晶報表生成頁面的問題是,當我嘗試將@Date值傳遞給存儲過程。該存儲過程運作良好,但我得到這個錯誤在C#

索引無效。 (異常來自HRESULT:0x8002000B(DISP_E_BADINDEX))

任何幫助我如何傳遞2個參數值?

回答

0

我已經使用了不同的方法。如果您創建了CrystalReport,C#將爲該報告生成一個類(和.cs)文件。

然後,您可以創建通過ReportClass report = new CrystalReport1();

報告然後你就可以添加參數:

using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 

ReportClass report = new CrystalReport1(); 
report.SetParameterValue("companies", "Microsoft"); 
//or use the overloaded value for an array as 2nd parameter 

但是你需要有通過C#創建報表(或可能添加到C#是足夠的)來創建報告的類。

0

參數是否來自同一個'源'?出於某種原因,如果您嘗試寫入Crystal傳遞給存儲過程的參數,則在名稱前需要@,而如果它是手動添加到報告中的參數,那麼@不需要。如果'@Date'不能作爲名稱,請嘗試'Date'。

+0

數據將被傳遞到存儲過程因此需要@符號 – 2011-04-21 14:47:59

+0

如果使用索引而不是名稱,即「.SetParameterValue(1,value)」,它是否工作?任何涉及參數的子報表? – MartW 2011-04-21 15:43:04