日期范围式
问题描述:
第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}