【发布时间】:2015-09-26 20:04:00
【问题描述】:
我遇到了一个我的用户报告的非常奇怪的问题: Crystal Reports 报表正在打印超过某个点的空白页。我的故障排除在某种程度上缩小了罪魁祸首,但同时显示了一些不一致的结果。
这是内幕:
- 该应用程序是一个 VB.NET 应用程序,使用 .NET 4。
- 解决方案中嵌入了多个 Crystal Report 报表,一个表单用于显示和打印任何报表。
- 要显示的报表通过代码后端处理,并在显示表单之前分配给表单的 CrystalReportViewer 对象。
- 对于问题报告,数据源来自代码中运行的 SQL 查询,然后分配为报告的数据源,然后将报告分配为表单中 CRV 对象的报告源。
- 标签打印机通过 USB 连接到相关计算机,安装程序用于提供驱动程序。
- 如果重要的话,那就是 Citizen CLP-7201e 标签打印机。
将数据源分配给报表的代码如下:
myCommand = New SqlClient.SqlCommand(strSQL, conPlanning)
myCommand.ExecuteNonQuery()
Da = New SqlClient.SqlDataAdapter(myCommand)
Da.Fill(dsData, "TempPrintLabels")
rptPrintLabels.SetDataSource(dsData.Tables(0))
rptPrintLabels.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait
frmReports.rptViewer.ReportSource = rptPrintLabels
frmReports.Show()
strSQL 是一个基本的 SQL 语句,基于从该特定表单中选择的报告。报告的 SQL 查询为 SELECT * FROM TempPrintLabels。
这是基本信息。该报告生成良好,对于带有约 100 个标签的报告,它打印得很好。当报告超过该限制时,就会发生奇怪的事情。它在 95-120 标签范围内。似乎并不一致。该报告将打印,直到达到该特定点。那时,它只会在报告的其余部分打印空白。将有与应该有的剩余页面一样多的空白。但是,如果您在空白开始处再次开始作业,则打印效果很好。
当我在 CrystalReportViewer 中查看此报表时,它看起来不错;所有标签都正确呈现。当我将它打印到 PDF 或文本文件打印机时,所有页面都在那里。所以报告和打印生成似乎对我有用。
我以为是打印机。为了测试这一点,我将 185 页的作业打印为 PDF,然后将其打印到打印机。打印得很好。
我无法解释这一点,甚至无法进一步诊断。打印表格中没有代码;它使用 CrystalReportViewer 对象来处理所有事情。如果是这个 CRV 对象,打印到 PDF 应该会给我空白页。它没有。如果是打印机,它应该在与直接从 CRV 对象打印相同的点开始从 PDF 打印空白。没有。
我还能寻找什么?
【问题讨论】:
-
嗨,@Ajay2707。虽然感谢您的编辑,但您正在修改不应该的特定部分。例如,CrystalReportViewer 是在 Visual Studio 中引用的对象;单词之间不应有空格。除此之外,宫缩是我自己的风格,与改进无关。
-
是一个特定的报表展示了这种消隐行为,还是所有超过 90-120 个标签的 Crystal Reports 都会出现这种情况?
-
@ChicagoMike 只有一份报告打印了这么多标签,所以很遗憾,我没有其他报告可以测试它是否是一个孤立事件。
-
您能创建一个报告吗?我知道这听起来很傻,但如果您新创建的报告能够打印 120 个标签,那将是一个巨大的洞察力。
-
@ChicagoMike 我也许可以,但我不确定它会提供什么价值;愿意分享你的假设吗?
标签: vb.net printing crystal-reports