2010-12-14 6 views
0

Seite1:Date Range Formel

Von Datum: TXTBOX1 bis Datum: TXTBOX2

btnSubmit-CLICK { Server.Transfer ("Page2.aspx"); }

Seite 2:

if (! PreviousPage = null) { TextBox txt1 = PreviousPage.FindControl ("TXTBOX1") als TextBox; TextBox txt2 = PreviousPage.FindControl ("TXTBOX2") als 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; 

     } 

    } 

Formel In der Formel-Editor: {? MyParameter} {? MyParameter}

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

Es funktioniert gut, wenn Bericht angezeigt für einzelnes Datum. Nicht für Datumsbereich.

Irgendwelche Vorschläge? Wo ich falsch in der Formel bin?

Antwort

0

Sie sollten die Datumsfelder als separate Parameter übergeben, und sie in Ihrer Formel-Editor wie diese Referenz:

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

Verwenden Sie einen ParameterRangeValue anstelle eines ParameterDiscreteValue, und stellen Sie die Startvalue und EndValue Objekte zu Ihren Start- und Enddaten.

Update: Hier einige Beispielcode, der auf einem Prüfbericht gearbeitet:

 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); 

Stellen Sie sicher, dass Ihre MyParameter ein Entfernungswert ist, und dass die select-Anweisung in Crystal ist dateField = {?MyParameter}