日期范围式

问题描述:

第1页:日期范围式

从日期:TXTBOX1至今:TXTBOX2

btnSubmit按钮点击 { Server.Transfer的( “page2.aspx”); }

第2页:

如果(!|上一页= NULL){ 文本框 = TXT1 PreviousPage.FindControl( “TXTBOX1”)作为文本框; TextBox txt2 = PreviousPage.FindControl(“TXTBOX2”)as TextBox;

 if (txt1.Text.Length != 0 && txt2.Text.Length != 0) 
     { 

     ReportDocument cryRpt = new ReportDocument(); 
     cryRpt.Load("MyReport.rpt"); 

      ParameterFieldDefinitions crParameterFieldDefinitions; 
      ParameterFieldDefinition crParameterFieldDefinition; 
      ParameterValues crParameterValues = new ParameterValues(); 
      ParameterDiscreteValue crParameterDiscreteValue = new   
      ParameterDiscreteValue(); 

      crParameterDiscreteValue.Value = txt1.Text + txt2.Text; 
      crParameterFieldDefinitions = 
      cryRpt.DataDefinition.ParameterFields; 
      crParameterFieldDefinition = 
      crParameterFieldDefinitions["MyParameter"]; 
      crParameterValues = crParameterFieldDefinition.CurrentValues; 

      crParameterValues.Clear(); 
      crParameterValues.Add(crParameterDiscreteValue); 
      crParameterFieldDefinition.ApplyCurrentValues(crParameterValues); 

      CrystalReportViewer1.ReportSource = cryRpt; 

     } 

    } 

公式在公式编辑器:{?MyParameter} {?MyParameter}

{} Command.Date> =和{} Command.Date = <

它工作正常,如果显示的报告单一日期。不适用于日期范围。

有什么建议吗?公式/代码中哪里出错?

你应该通过日期字段作为单独的参数,并在你这样的公式编辑器中引用它们:

{Command.Date} >= {?ParamDateFrom} and {Command.Date} <= {?ParamDateTo} 

使用ParameterRangeValue代替ParameterDiscreteValue,并设置在startValue和endValue值属性,以起点和结束日期。

更新: 下面是一个测试报告工作的一些示例代码:

 ParameterFieldDefinitions paramDefinitions = report.DataDefinition.ParameterFields; 

    ParameterFieldDefinition paramDefinition = paramDefinitions["DateRange"]; 
    ParameterValues paramValues = paramDefinition.CurrentValues; 

    ParameterRangeValue rangeValue = new ParameterRangeValue(); 
    rangeValue.StartValue = new DateTime(2010, 10, 31); 
    rangeValue.EndValue = new DateTime(2010, 12, 15); 

    paramValues.Add(rangeValue); ; 

    paramDefinition.ApplyCurrentValues(paramValues); 

确保您MyParameter是一个范围值,并在水晶select语句是dateField = {?MyParameter}