数据集不支持可空

时间:2019-04-30 10:16:44

标签: asp.net asp.net-mvc model crystal-reports nullable

我正在处理水晶报表,并获取“不支持DataSet的Nullable” exception.i在google上搜索并找到了许多解决方案,但我仍然没有得到如何使用null-coalescing运算符三元运算符将空列转换为null的信息条款。

下面是我的代码

          ReportDocument rd = new ReportDocument();
        // rd.Load(Path.Combine(Server.MapPath("~/Reports"), "CrystalReport.rpt"));
        rd.Load(Server.MapPath("~/Reports/CrystalReportForSingle.rpt"));
        rd.SetDatabaseLogon("sa", "786", @"NUMAN-PC", "DiaryManagementSystem");
        DiaryManagementSystemEntities1 db = new DiaryManagementSystemEntities1();
        // rd.SetDataSource(DataSetToList.ToDataSet(db.File_Movement.Where(x => x.file_Id == id).ToList()));

        rd.SetDataSource(db.File_Movement.Where(x => x.file_Id == id).ToList());
        Response.Buffer = false;
        Response.ClearContent();
        Response.ClearHeaders();

        try
        {

            Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
            stream.Seek(0, SeekOrigin.Begin);
            return File(stream, "application/pdf", "DiaryMovementList.pdf");

        }
        catch
        {

            throw;
        }

        return View();

    }

我的Table中有多个DateTime类型的列,这些列为空,需要在传递给Crystal Report DataSet之前转换为null,但是我不知道如何在where子句方法中转换这些列。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,但是您可以将它们作为公式或参数发送。

公式示例:

var formula = "DATE({CreatedDate}) >= DATE('30.04.2019')";
rpt.RecordSelectionFormula = formula;

参数示例:

rpt.SetParameterValue("CreatedDate", "30.04.2019");