Crystal Reports-使用SDK的间歇式打印机假脱机停止

2020-09-28 01:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用Visual Studio 2013构建一个32位DLL,以打印和预览内部设计的Crystal报表。 然后,我们的主软件会调用此DLL。 最新的DLL是使用32位SAP Crystal Runtime SP20(带有" CrystalDecisions.ReportAppServer"程序集)构建的。 我们使用" CrystalDecisions.CrystalReports.Engine.ReportDocument"设置参数加载报告,更改报告和子报告数据库以及表格的位置,然后使用" PrintOutputController.PrintReport(PrintOptions)"命令发送到打印机。

在客户环境中,我们间歇性地看到上述" PrintReport()"调用停止了打印。 在等待我们的DLL时,主软件会出现暂停。 通过日志,似乎DLL正在等待PrintReport()响应,该响应永远不会返回。 在打印队列中,我们可以看到文档正在等待,其他报告正在排队。 恢复的唯一方法是停止特定的打印文档或强制完全关闭主软件。 其他客户也使​​用不同的报告和打印机报告了此情况。 在本地和网络上已安装了不同的驱动程序。 已尝试使用各种操作系统,包括Windows 10.1。 所有引发相同的错误。 开发机器:Windows 7 64位,.Net 4.5,Visual Studio2013。目标客户端机器:Windows 7和8,.Net 4.5。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用Visual Studio 2013构建一个32位DLL,以打印和预览内部设计的Crystal报表。 然后,我们的主软件会调用此DLL。 最新的DLL是使用32位SAP Crystal Runtime SP20(带有" CrystalDecisions.ReportAppServer"程序集)构建的。 我们使用" CrystalDecisions.CrystalReports.Engine.ReportDocument"设置参数加载报告,更改报告和子报告数据库以及表格的位置,然后使用" PrintOutputController.PrintReport(PrintOptions)"命令发送到打印机。

在客户环境中,我们间歇性地看到上述" PrintReport()"调用停止了打印。 在等待我们的DLL时,主软件会出现暂停。 通过日志,似乎DLL正在等待PrintReport()响应,该响应永远不会返回。 在打印队列中,我们可以看到文档正在等待,其他报告正在排队。 恢复的唯一方法是停止特定的打印文档或强制完全关闭主软件。 其他客户也使​​用不同的报告和打印机报告了此情况。 在本地和网络上已安装了不同的驱动程序。 已尝试使用各种操作系统,包括Windows 10.1。 所有引发相同的错误。 开发机器:Windows 7 64位,.Net 4.5,Visual Studio2013。目标客户端机器:Windows 7和8,.Net 4.5。

付费偷看设置
发送
3条回答
SKY徐
1楼 · 2020-09-28 02:11.采纳回答

西蒙,你好

我经常听到此消息,所以我搜索了如何从打印机服务获取打印机作业状态报告,并从Microsoft找到了这篇很棒的文章:

https ://msdn.microsoft.com/zh-cn/library/aa970685%28v=vs.100%29.aspx?f = 255&MSPPError = -2147217396

添加/创建一个可以查询打印机并查看问题所在的应用,这可能是驱动程序,框架或内存等问题。

将大型打印作业发送到无法在内存中保存大量信息的打印机会导致类似您的问题。

CR简单地将作业流式传输到打印机,尽管它确实等待打印机的响应,但是一旦完成就完成了作业,如果它没有答复,则该应用程序似乎挂起。

所以知道假脱机程序实际上正在产生什么错误将很有趣。

Don

SAP砖家
2楼-- · 2020-09-28 02:00

Hi Don,

最终用户对报告的构成和输入几乎没有控制权。 我们只需传递一个或两个参数即可。

过去,最终用户已经等待了一个多小时,然后他们强制关闭应用程序。这些打印通常需要几秒钟的时间。 一分钟后仍未得到答复,我们就知道出了点问题。

我将提出PDF想法。

我们已经拥有广泛的日志记录和错误捕获功能。 我们已经在许多报告和用户中发现了此问题。 但是它确实确实发生在一些机器上的一些报告上。 这些往往体积很大。

感谢您的帮助。

Simon

渐行渐远_HoldOn
3楼-- · 2020-09-28 02:20

嗨西蒙,

如果不一致,则可能是这些用户PC上的环境或者他们正在做的事情有所不同。

是否已安装打印机?

运行时已更新? CR在较旧的版本中存在一个错误,即报表引擎会在设计时寻找确切使用的打印机。 我们已修复该问题,并将Dissociate添加到页面设置属性。

如果他们正在使用终端服务器进行连接,这是MS引入的另一个错误,请在本地安装打印机,并且不要使用Redirected 2驱动程序。

也可能是AV软件,请在其日志中查找任何内容。

也请在事件查看器中查看是否已记录任何内容。

我自己还没有看到这个,所以我不能建议其他任何东西...。

也许是模块或ProcessMonitor日志,并比较好/坏日志,同一报告,同一时间。

这是您编写的Server应用程序吗? 如果一次要执行多少个报告作业?

CR for VS从来都不是高负载情况的设计者,它全是inProc,也从未设计过这样做。

一次要处理多少个报告?

一周热门 更多>