第1页:
从日期:TXTBOX1到日期:TXTBOX2
btnSubmit按钮-CLICK { Server.Transfer的( “page2.aspx”); }
第2页:
if(PreviousPage!= null) { TextBox txt1 = PreviousPage.FindControl(“TXTBOX1”)作为TextBox; TextBox txt2 = PreviousPage.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;
}
}
公式编辑器中的公式:
{Command.Date}> = {?MyParameter}和{Command.Date}< = {?MyParameter}
工作正常如果单个日期显示报告。不适用于日期范围。
有什么建议吗?我在公式/代码中的错误???
答案 0 :(得分:0)
您应该将日期字段作为单独的参数传递,并在公式编辑器中引用它们,如下所示:
{Command.Date} >= {?ParamDateFrom} and {Command.Date} <= {?ParamDateTo}
答案 1 :(得分:0)
使用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
是范围值,并且Crystal中的select语句为dateField = {?MyParameter}