我正在处理水晶报表,并获取“不支持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子句方法中转换这些列。
答案 0 :(得分:0)
我不确定我是否理解正确,但是您可以将它们作为公式或参数发送。
公式示例:
var formula = "DATE({CreatedDate}) >= DATE('30.04.2019')";
rpt.RecordSelectionFormula = formula;
参数示例:
rpt.SetParameterValue("CreatedDate", "30.04.2019");