2016-08-11 27 views
1

我添加配方場區,沒有fromdate,TODATE在報告通價值

更新的圖像

UPDATED IMAGE

我也試試這個另一種方法:

protected void Report_Click(object sender, EventArgs e) 
     { 

    data crystalReport = new data();  
crystalReport.DataDefinition.FormulaFields["region"].Text = regiondrop.SelectedValue; 
     crystalReport.DataDefinition.FormulaFields["fromdate"].Text = fromdate.Value; 
     crystalReport.DataDefinition.FormulaFields["todate"].Text = todate.Value; 

BindReport(crystalReport,Convert.ToDateTime(fromdate.Value), Convert.ToDateTime(todate.Value), regiondrop.SelectedValue); 

     } 

此頁顯示的錯誤:

錯誤

error image

此字段名稱不知道。詳細信息:文件中的errorKind錯誤temp_2c6994eb-49ef-432f-bfd7-af0eb80dc7ec 4032_6896_ {5E54477E-F078-41DF-BD52-AF042B96DA53} .rpt:公式中的錯誤fromdate:'{DataTable1.StartDate}'此字段名稱未知。詳細信息:errorKind

現在,這與@Furtiro

public void BindReport(ReportDocument crystalReport, DateTime fromdate, DateTime todate, string region) 
    { 

     T1 t = new T1(); 

     DateTime fdate = new DateTime(fromdate.Year, fromdate.Month, fromdate.Day, 0, 0, 0); 
     DateTime tdate = new DateTime(todate.Year, todate.Month, todate.Day, 23, 59, 59); 
     List<griddataresult_Result> dsc = t.griddataresult(fdate, tdate, region).ToList(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("ID", typeof(int)); 
     dt.Columns.Add("OwnerName", typeof(string)); 
     dt.Columns.Add("RegNo", typeof(string)); 


     foreach (var c in dsc) 
     { 

      dt.Rows.Add(c.ID, c.OwnerName, c.RegNo, c.total_voilatio, c.MileageAccumlation, c.MaxSpeed); 
     } 

     crystalReport.DataDefinition.FormulaFields["region"].Text = "'" + region + "'"; 
     crystalReport.DataDefinition.FormulaFields["fromdate"].Text = "'" + fromdate + "'"; 
     crystalReport.DataDefinition.FormulaFields["todate"].Text = "'" + todate + "'"; 

     crystalReport.SetDataSource(dt); 
     CrystalReportViewer1.ReportSource = crystalReport; 
     CrystalReportViewer1.DataBind(); 
    } 

回答

2

的幫助下,你可以像實例化一個對象報告工作終於,更換您的行:

ReportDocument crystalReport = new ReportDocument(); 

通過:

data crystalReport = new data(); 

這裏的數據是你的.rpt類的名字。

*更新*

你不明白的ReportDocument是一個對象,你的對象,這裏將是你的data類。 因此,當您設置doc = crystalreport時,所有行都沒用,因爲您不在CrystalReport對象上工作,而是在其他對象上工作。

二更新:

我沒有看到公式您的訪問,你不應該寫在你的公式的名稱的「@」我的壞對不起,這裏是你的工作代碼。 :

protected void Report_Click(object sender, EventArgs e) 
    { 

     data crystalReport = new data(); 

     crystalReport.DataDefinition.FormulaFields["region"].Text = "'" + regiondrop.SelectedValue.ToString() + "'"; 

     crystalReport.DataDefinition.FormulaFields["fromdate"].Text = "'" + fromdate.Value.ToString() +"'"; 

     crystalReport.DataDefinition.FormulaFields["todate"].Text = "'"+ todate.Value.ToString() + "'"; 


     BindReport(crystalReport,Convert.ToDateTime(fromdate.Value), Convert.ToDateTime(todate.Value), regiondrop.SelectedValue); 

    } 

要小心具體的數據類型,如果你想顯示在公式中一些文本動態,你需要用引號投下您的數據時,你寫在C#代碼中的公式,例如解析

report.DataDefinition.FormulaFields["yourformula"].Text ="'Hello world'"; 不要忘記引號,簡單或雙引號將起作用。

最好的問候,

+0

請更新這個節目同樣的錯誤@Furtiro – user6628729

+0

@ user6628729請檢查我的更新答案,並告訴我,如果它的工作原理 – Furtiro

+0

檢查我更新的代碼我嘗試你的代碼,本次車展同樣的錯誤 – user6628729