做了两张水晶表,想在两个表之间切换打印,并且实现A4纸双面打,咋弄啊?
昨晚了水晶表,到了打印的时候,关键的时候,也比较烦。还是继续之前的情况,有两个表,第一个是人员表,第二个是商品表
张三
商品1
商品2
商品3
李四
商品1
商品2
商品3
商品4
。。。。
报表是按人员来分组的
首先打印第一张水晶报表(只能容下2项商品信息),但是,如果商品超过2个的话,要在A4的反面打印,即到了第二张报表(容下3项商品信息)。第一张与第二张报表的设计是不一样的。如果超过5项商品的话,又回到第一张水晶报表打印,一次类推。
同时,这边打印的话,使用代码来完成,并不是点击CrystalReportView上的打印按钮。
请问以上功能如何才能实现啊?好像很有难度,比较有挑战性哦。
求助高手,不知中秋节,大家都上不上网啊!!
--------------------编程问答-------------------- 今天大家都休息啊,可怜我没得休息 --------------------编程问答--------------------
中秋佳节还坚守岗位 --------------------编程问答--------------------
没办法,这个问题你还会啊,指导我一下吧。是不是水晶报表的资源,不用数据集,table啊?或者用datarows?还是咋滴? --------------------编程问答-------------------- 楼主辛苦了 --------------------编程问答-------------------- 也想知道
我还不会 --------------------编程问答-------------------- 第一个问题需要进一步明确下。
比如楼主这样的设计,应该是有个纸张模板的,建议模板正反面贴个图上来看看。
第2个双面打印,确认打印机支持双面打印(或手动操作)
ReportDocument rptDoc=New ReportDocument();--------------------编程问答--------------------
rptDoc.Load(@"c:\1.rpt");
rptDoc.SetDataSource(yourDataSet);
//设置打印机名称
rptDoc.PrintOptions.PrinterName="xxx";
//设置为双面打印
rptDoc.PrintOptions.PrinterDuplex=CrystalDecisions.Shared.PrinterDuplex.Horizontal;
rptDoc.PrintToPrinter(1,true,0,0);
第一个是正面,第二个是反面的。第一个开头部分是组信息,后面就是跟着2个商品信息,第二张,就是3个商品信息。 --------------------编程问答--------------------
用的是本地打印,这个打印机的名称如何获取?
--------------------编程问答-------------------- 正面打印的是rpt1,反面打印rpt2,然后要双面打印,有什么样的解决方案啊? --------------------编程问答--------------------
private static PrintDocument fPrintDocument = new PrintDocument(); /// <summary> /// 获取本机默认打印机名称 /// </summary> public static String DefaultPrinter { get { return fPrintDocument.PrinterSettings.PrinterName; } } /// <summary> /// 获取本机的打印机列表。列表中的第一项就是默认打印机。 /// </summary> public static List<String> GetLocalPrinters() { List<String> fPrinters = new List<string>(); fPrinters.Add(DefaultPrinter); foreach (String fPrinterName in PrinterSettings.InstalledPrinters) { if (!fPrinters.Contains(fPrinterName)) fPrinters.Add(fPrinterName); } return fPrinters; }--------------------编程问答-------------------- 怎么不分行。。。
private static PrintDocument fPrintDocument = new PrintDocument();--------------------编程问答-------------------- 今天,我听老师说水晶报表还要收费,是不是啊!那有没有免费的啊 ! --------------------编程问答--------------------
/// <summary>
/// 获取本机默认打印机名称
/// </summary>
public static String DefaultPrinter
{
get { return fPrintDocument.PrinterSettings.PrinterName; }
}
/// <summary>
/// 获取本机的打印机列表。列表中的第一项就是默认打印机。
/// </summary>
public static List<String> GetLocalPrinters()
{
List<String> fPrinters = new List<string>();
fPrinters.Add(DefaultPrinter);
foreach (String fPrinterName in PrinterSettings.InstalledPrinters)
{
if (!fPrinters.Contains(fPrinterName))
fPrinters.Add(fPrinterName);
}
return fPrinters;
}
图片看不到.. --------------------编程问答--------------------
参考: VS200X中水晶报表的授权说明 --------------------编程问答--------------------
我第一次发图片,不怎么会啊,忘记分行了。打印机看明白了,感谢~~~~
这个两个rpt交替打印还没弄明白,好难啊。如果两个报表加在一起的话,问题就简单了。
这是正面,第一行是人员信息,第二行和第三行显示商品信息
这是反面,三行,每行显示一项商品信息
我说的两个rpt合并起来,就是成一个rpt,如下,这样合并:
如此合并的话,就没有交替打印报表的问题了,因为两个rpt合并和变成一个肉rpt了。
不知大家明白了没,呼呼~~~ --------------------编程问答-------------------- 点 这里 上传图片
然后在 回复内容的工具栏里 点击“插入图片”图标,右边数过来第五个,把刚上传图片的图片地址引用过来即可。。 --------------------编程问答-------------------- 如果打印机支持双面打印。在打印机上设置一下。如果打印机提供相关的双面打印的API调用API实现双面打印。
我一般双面打印都是客户自己去点个按钮就可以了。你在打印时所做的东西就是直接一页一页的打印就行了。
补充:.NET技术 , 图表区