水晶报表连续打印报错
我在一个按钮事件中多次打印报表报错,代码如下:
printtj.phb phb = new jyhnt.printtj.phb(); //实例化报表
hgz.SetDataSource(tb_phb);//数据源
phb.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
phb.Dispose(); //关闭
printtj.hgz hgz = new jyhnt.printtj.hgz();
hgz.SetDataSource(tb_phb);
hgz.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
hgz.Dispose(); //关闭
printtj.jhl jhl = new jyhnt.printtj.jhl();
jhl.SetDataSource(tb_phb);
jhl.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
jhl.Dispose(); //关闭
.........
........
一共有8个报表 报错如下:
CrystalDecisions.CrystalReports.Engine.FormattingException:
文件 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp1\temp_d0489b01-c22c-4d06-bbb6-dd032f9c75da {29468583-CC50-475D-98F6-FE7550223C41}.rpt 内出错:
页眉或页脚超过了一页。 ---> System.Runtime.InteropServices.COMException (0x80000237):
文件 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp1\temp_d0489b01-c22c-4d06-bbb6-dd032f9c75da {29468583-CC50-475D-98F6-FE7550223C41}.rpt 内出错:
页眉或页脚超过了一页。
请问如何解决 --------------------编程问答-------------------- 没人知道吗 --------------------编程问答-------------------- 1:你先用排除法定位下到底是哪个报表在打印时出错了
2:从“页眉或页脚超过了一页”这个信息上看,应该是页面的大小超出了实际的纸型大小,可能需要对模板进行修改
你找到具体的报表后,先把页眉和页脚抑制显示掉看下能不能正常打印,应该是各个节组合起来的高度大于实际纸型的高度了。 --------------------编程问答-------------------- 我估计是连续打印出的问题 不是报表的事 因为我用报表查看器装载单独打印都没问题 --------------------编程问答-------------------- 试试看,至少你要定位到时哪张出了问题。 --------------------编程问答-------------------- 是不是我的写法有问题
printtj.phb phb = new jyhnt.printtj.phb(); //实例化报表
hgz.SetDataSource(tb_phb);//数据源
phb.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
phb.Dispose(); //关闭
printtj.hgz hgz = new jyhnt.printtj.hgz();
hgz.SetDataSource(tb_phb);
hgz.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
hgz.Dispose(); //关闭
printtj.jhl jhl = new jyhnt.printtj.jhl();
jhl.SetDataSource(tb_phb);
jhl.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
jhl.Dispose(); //关闭
--------------------编程问答-------------------- 我刚才试过了 把代码分别写到每个窗体就没问题 如下
调用打印窗体
printtj.dyphb dy = new jyhnt.printtj.dyphb();
dy.tb_phb = tb_phb;//传递数据
dy.show()
打印窗体代码如下
phb phb = new phb();//实例化
phb.SetDataSource(tb_phb);//数据
phb.PrintToPrinter(1, false, 0, 0); //打印
this.Close(); //关闭
第二个窗体
.....
第三个
...
可是我觉得这样有点麻烦 不知道错在哪
--------------------编程问答-------------------- 有人知道吗?
phb.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
phb.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
phb.PrintToPrinter(dy_fs, false, 0, 0);//打印 指定份数
这样连续的打印就报错 页眉和页脚超过一页 --------------------编程问答-------------------- 如果数据样本一样,单独打印可以的话,那还真有点想不出原因
会不会是打印机响应不过来呢,呵呵。
你把份数设置为1,降低打印的频度试试? --------------------编程问答-------------------- 连续打印,看看有没有设置好默认打印机,单独打印可以选择打印机,连续打印时只用默认打印机。
补充:.NET技术 , 图表区