2010-12-14 3 views
0

Page1:Диапазон дат Формула

От Дата: TXTBOX1 To Date: TXTBOX2

BTNSUBMIT ЩЕЛчКОМ { Server.Transfer ("page2.aspx"); }

Page 2:

если (! PreviousPage = NULL) { TextBox txt1 = PreviousPage.FindControl ("TXTBOX1") в TextBox; TextBox txt2 = ПредыдущийPage.FindControl ("TXTBOX2") как 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 < =

Он отлично работает Если отображается отчет для одной даты. Не для диапазона дат.

Любые предложения? Где я ошибаюсь в формуле/коде ???

ответ

0

Вы должны передать поля даты в виде отдельных параметров, а также ссылки на них в своем редакторе формул, как это:

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

Используйте ParameterRangeValue вместо ParameterDiscreteValue и установить свойства StartValue и EndValue к вашему началу и даты окончания.

Update: Вот пример кода, который работал на протоколе испытаний:

 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 является диапазон значений, и что оператор выбора в кристалл dateField = {?MyParameter}

Смежные вопросы