ASP .NET WebプロジェクトでCrystal Reportを表示する際に問題が発生します。これが私の「レポートの表示」ボタンのコードです:Crystal Reportsがストアドプロシージャで「DataSetでSystem.Nullableをサポートしていません」を返します
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に結果を問題なく表示しています。レポートでは、ストアドプロシージャの結果値とまったく同じデータセットを使用しています。
これはストアドプロシージャです:私は同じ状況にいくつかの報告があり、これは、レポートをロードするときにエラー「DataSetが可能System.Nullableをサポートしていない」私を返しているだけです
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
。私が言ったように、ストアドプロシージャの結果はnull値を表示していないので、GridViewの結果はOKです。
ストアドプロシージャの結果の行がゼロの場合、レポートは正常にロードされますが、明らかにレコードはなくロードされます。私は何が欠けていますか?
ありがとうございました。
どういうわけか、それは私がSPからその列を削除し、Entity Frameworkの中に変更を適用するだけでテストのために。日付列に関係しています。だから、それでは、レポートをうまく表示しました。そして、私は再び日付の列を追加しました。今は動作します!なぜこれが起こったのか分かりませんが、少なくとも今のところうまくいきます。 –
おそらく、アウエー。 –
いいえ、日付フィールドが "not null"に設定されているため、ここで何が起こったのか分かりません –