簡體   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