0

我希望在页面加载时报告应该显示所有记录。现在,当我想按日期(组字段)显示过滤器记录时,即显示所有不带过滤器的记录,否则显示带过滤器的记录。

当我想过滤数据时,我的代码如下

 protected void click(object sender, EventArgs e)
        {

            ReportDocument cryRpt = new ReportDocument();
            cryRpt.Load(Server.MapPath("report.rpt"));
            cryRpt.SetDatabaseLogon("userid", "password", "server", "database");
            ParameterFieldDefinitions crParameterFieldDefinitions;
            ParameterFieldDefinition crParameterFieldDefinition;
            ParameterValues crParameterValues = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

            crParameterDiscreteValue.Value =Convert.ToDateTime( dtAppt.Text).ToShortDateString();
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["stdate"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;
            crParameterValues.Add(crParameterDiscreteValue);
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
            CrystalReportViewer1.ReportSource = cryRpt;
            Checkbox1.Checked = false;

        }

在此处输入图像描述 在 if 条件中写什么,以便我可以获得所有记录以及在下面这一行中传递什么?

crParameterDiscreteValue.Value =Convert.ToDateTime( dtAppt.Text).ToShortDateString();
4

2 回答 2

3

当您想显示所有记录时添加特殊值,即 01/01/1900

crParameterDiscreteValue.Value ="19000101";

在公式中

{?stdate} = '19000101' or {appointment.startdate} = {?stdate}

无需使用 if else 语句。

于 2012-05-29T06:08:51.070 回答
0

诀窍是将“特殊值”传递给您的参数或创建一个新参数以覆盖。

一个“特殊值”的例子是 01/01/1900:

然后在您的选择标准中:{?stdate} = '19000101' or {appointment.startdate} = {?stdate}

如果你走另一条路线,创建一个布尔参数来覆盖:

然后在您的选择标准中:{?override} or {appointment.startdate} = {?stdate}

于 2012-05-28T13:49:09.907 回答