繁体   English   中英

Crystal Reports使用存储过程返回“ DataSet不支持System.Nullable”

[英]Crystal Reports return “DataSet does not support System.Nullable” with Stored Procedure

我在ASP.NET Web项目上显示Crystal Report时遇到问题。 这是我的“查看报告”按钮代码:

private void ViewReport(int bankID, DateTime dateFrom, DateTime dateTo)
{
   ReportDocument report = new ReportDocument();
   report.Load(Server.MapPath("~\\Reports\\rptBankTransactionsList.rpt"));
   report.SetDataSource(bankEntities.spBankTransactionsList(bankID, dateFrom, dateTo).ToList());
   report.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, false, "TransactionsList");
}

我正在使用Entity Framework,并且spBankTransactionsList存储过程返回正确的值。 我什至使用完全相同的存储过程将结果显示在GridView中也没有问题。 该报告使用的数据集具有与存储过程完全相同的结果值。

这是存储过程:

ALTER PROCEDURE [dbo].[spBankTransactionsList] 
@bankID AS INT,
@dateFrom AS DATETIME2,
@dateTo AS DATETIME2
AS

BEGIN

    SELECT B.BankID, B.BankName, BT.Date, BT.Description, BT.Amount
    FROM Bank B
    INNER JOIN BankTransaction BT ON B.BankID = BT.BankID
    WHERE B.BankID = @bankID
    AND BT.Date BETWEEN @dateFrom AND @dateTo
END

我有几种情况相同的报告,这是唯一一个在加载报告时返回“ DataSet不支持System.Nullable”错误的报告。 存储过程的结果没有显示任何null值,正如我所说的,GridView中的结果还可以。

如果存储过程结果的行为零,则报告将很好地加载,显然没有记录,但它会加载! 我想念什么?

非常感谢。

问题一直存在于其他报告和SP中,所以最后我想出了解决方案。

尽管在我的SP中,我确保结果上没有空值,但是,当Entity Framework将SP放入模型中时,它“假设”某些列可能为空。

解决方案将转到“模型资源管理器”,选择“实体模型”,然后在“复杂类型”中搜索SP的结果类型(在我的情况下为“ spBankTransactionsList_Results”,将其展开并检查每个属性的可为null的值都为false。

希望这会帮助其他人遇到同样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM