簡體   English   中英

為什么 Crystal Reports 引擎在使用 QueueBackgroundWorkItem 啟動的后台任務中使用時表現不同?

[英]Why does the crystal reports engine appear to behave differently when used in a background task started using QueueBackgroundWorkItem?

在 web 應用程序中,我有代碼使用水晶報表以及 ReportDocument.ExportToDisk 和 ReportDocument.ExportToStream 方法生成 PDF 文件。 我正在使用 64 位 crystal runtime v13 SP31。 使用 SetDataSource 方法將所有數據庫數據直接推送到每個報表。

當我從 web 頁面的代碼隱藏調用代碼時,它完美執行並生成了可用的 pdf。

對於應用程序中的某些(不是全部)報告,當我從使用 QueueBackgroundWorkItem 生成的后台任務中調用完全相同的代碼時,它的行為會有所不同並生成異常。 到目前為止,我得到的異常類型要么是與報告中的公式字段相關的虛假“此處需要字符串”異常,要么是與所有子報告參數相關的“缺少參數”異常(盡管所有子報告參數都是鏈接到等效的主要報告參數)。

這些問題對於單個報告似乎是一致的(即每次在后台運行該報告時都會出現相同的錯誤)——但並非應用程序中的每個報告都受到影響。 在目前確定的每種情況下,如果從代碼隱藏運行或在報表設計器中預覽,報表都可以完美運行,但只有在后台環境中生成報表時才會失敗。

公式字段異常似乎只影響包含使用條件語句(“if”或“iif”)的公式字段的報告,其中條件涉及數字字段但結果是字符串 - 類似於“ IIF ({NumericField} = 0, 'Zero', 'Non-Zero') ”例如。 調整公式以包含數字條件(例如“ IIF (TOTEXT({NumericField}) = '0', 'Zero', 'Non-Zero') ”)並不能解決問題。

同樣,我嘗試添加額外的代碼來直接設置子報告參數(而不是讓它們從鏈接的主報告參數中過濾掉),但無論我使用什么技術,也會產生異常(似乎水晶不喜歡你試圖繞過參數鏈接)。

據我所知,水晶報表引擎在后台設置中的行為有所不同。 有沒有人知道后台任務環境中的物理差異與可以解釋這些行為差異的正常代碼隱藏相比,有沒有人對補救措施有任何建議?

這可能與用於提供數據的過程有關。

要測試該理論,請使用 static 數據源(或僅使用保存的數據)進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM