我遇到了一个非常奇怪的问题,我的用户正在报告: Crystal Reports报表正在打印某个点以外的空白页。我的故障排除有点缩小了罪魁祸首,但与此同时,却显示出一些不一致的结果。
这里是低点:
将数据源分配给报告的代码如下:
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应该给我空白页。它没有。如果它是打印机,它应该已经开始从PDF直接打印空白,就像直接从CRV对象打印一样。它没有。
我还能找到什么?
答案 0 :(得分:1)
对于这个问题,我有一些想法会在打印时导致这种行为。
您所有标签长度的宽度问题可能会超出页面大小。因此,当您缩小标签的宽度时,您可以检查所有标签和页面是否为空白(即使标签未正确显示,我们也可以单独处理)。如果它没有显示(正如你现在所获得的那样),那么你只需处理标签宽度为#34;可以增长"所有标签的选项为true。
如果一切正常,那么我认为您可以查看打印机的页面设置/页边距。
如果上述方法不起作用,则只需添加静态标签和值即可创建新报告或现有报告,然后先预览,然后从代码中调用。你找到的东西。
根据我的经验(在这种情况下我可能错了),当您的列增加时,只要水晶报表中出现空白页,报表的宽度就会产生问题。因此,要么将报告宽度设置为减少,要么将打印机页面设所以它打印,否则它不会抛出错误,而是给出空白页。