繁体   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