2012-07-01 24 views
0

我有一個項目組成一個asp.net網頁生成報告的總用法每天的一個pertucular項目。 該代碼在VS 2008中與CR 9一起工作,但由於我使用VS 2010將其轉換爲CR 13,因此每當向報告添加參數時,報告都會將錯誤報告爲「參數值丟失」。 該參數在子報表中。 報告可以正確顯示,無需參數。 [DT2有記錄,我已經填補它提到上面的代碼] 我只是想它在週六第一 我寫的代碼是顯示如下─C#ASP.Net + CR 13 - 參數值丟失

crReport cr = new crReport(); 
cr.SetDatabaseLogon(gf.databaseUsername, gf.databasePass); 
((ReportDocument)cr.Subreports["MenuReport"]).SetDataSource(dt2); 
#region Parameter gathering 
ParameterValues paramQuantity = new ParameterValues(); 
for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    dt2.Rows[i]["menuItemFK"] = jobBll.GetDataInfo("M_MenuItems", "id", dt.Rows[i]["menuItemFK"].ToString(), "menuItemName", true); 
    string menuItemFK = dt.Rows[i]["menuItemFK"].ToString(); 
    string reportDate = dt.Rows[i]["reportDate"].ToString(); 
    DataTable dtQuntity = new DataTable(); 
    dtQuntity = jobBll.GetMenuItemDayUsage(menuItemFK, reportFrom, reportTo, "Saturday", true); 
    ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue(); 
    if (dtQuntity.Rows[0][0].ToString() != "") 
     parameterDiscreteValue.Value = dtQuntity.Rows[0][0].ToString(); 
    else 
     parameterDiscreteValue.Value = "0"; 
    paramQuantity.Add(parameterDiscreteValue); 
} 
#endregion 
//cr.SetParameterValue("Sunday Quantity", paramQuantity, "MenuReport"); 
//cr.SetParameterValue("Monday Quantity", paramQuantity, "MenuReport"); 
//cr.SetParameterValue("Tuesday Quantity", paramQuantity, "MenuReport"); 
//cr.SetParameterValue("Wednesday Quantity", paramQuantity, "MenuReport"); 
//cr.SetParameterValue("Thursday Quantity", paramQuantity, "MenuReport"); 
//cr.SetParameterValue("Friday Quantity", paramQuantity, "MenuReport"); 
cr.SetParameterValue("saturdayQuantity", paramQuantity, "MenuReport"); 
crvReport.ReportSource = cr;  
crvReport.RefreshReport(); 

請儘快幫助我。 等待答覆。 謝謝。

+1

哪一行發生錯誤?請明確說明。 –

+0

沒有錯誤。 完成此代碼後,報告顯示「參數值丟失」,同時獲取所有記錄的所有參數。 –

回答

1

好吧,最後我去工作。 我將'cr'聲明爲'ReportDocument'對象,或者'crReport.rpt'對象也評論了cr.RefreshReport();它清除了參數值。 現在它的工作正常。 用於記錄顯示各個參數值​​我寫「顯示字符串」式的參數作爲 -

StringVar Array Input:={?saturdayQuantity}; 
Input[RecordNumber]; 

現在C#代碼看起來如下 -

ReportDocument cr = new ReportDocument();// 
string reportPath = Server.MapPath("crReport.rpt");// 
cr.Load(reportPath);// 

((TextObject)cr.ReportDefinition.ReportObjects["reportFrom"]).Text = reportFrom; 
((TextObject)cr.ReportDefinition.ReportObjects["reportTo"]).Text = reportTo; 
cr.SetDatabaseLogon(gf.databaseUsername, gf.databasePass); 

#region Parameter gathering 
ParameterValues paramQuantity = new ParameterValues(); 
for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     dt2.Rows[i]["menuItemFK"] = jobBll.GetDataInfo("M_MenuItems", "id", dt.Rows[i]["menuItemFK"].ToString(), "menuItemName", true); 


     //GET OPENING & CLOSING STOCK TOTAL & ASSIGN BELOW 
     string menuItemFK = dt.Rows[i]["menuItemFK"].ToString(); 
     string reportDate = dt.Rows[i]["reportDate"].ToString(); 

     DataTable dtQuntity = new DataTable(); 
     dtQuntity = jobBll.GetMenuItemDayUsage(menuItemFK, reportFrom, reportTo, "Saturday", true); 

     ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue(); 
     if (dtQuntity.Rows[0][0].ToString() != "") 
      parameterDiscreteValue.Value = dtQuntity.Rows[0][0].ToString(); 
     else 
      parameterDiscreteValue.Value = "0"; 

     paramQuantity.Add(parameterDiscreteValue); 

    } 

    cr.Subreports["MenuReport"].SetDataSource(dt2); 

    ////cr.SetParameterValue("Sunday Quantity", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Monday Quantity", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Tuesday Quantity", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Wednesday Quantity", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Thursday Quantity", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Friday Quantity", paramQuantity, "MenuReport"); 
    cr.SetParameterValue("saturdayQuantity", paramQuantity, "MenuReport"); 

    ////cr.SetParameterValue("Sunday Rate", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Monday Rate", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Tuesday Rate", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Wednesday Rate", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Thursday Rate", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Friday Rate", paramQuantity, "MenuReport"); 
    ////cr.SetParameterValue("Saturday Rate", paramQuantity, "MenuReport"); 
    #endregion 


    crvReport.ReportSource = cr; 
    //crvReport.RefreshReport();// 

我已標記的編輯的代碼與//在行尾。