当前位置:编程学习 > C#/ASP.NET >>

做了两张水晶表,想在两个表之间切换打印,并且实现A4纸双面打,咋弄啊?

昨晚了水晶表,到了打印的时候,关键的时候,也比较烦。

还是继续之前的情况,有两个表,第一个是人员表,第二个是商品表

张三
商品1
商品2
商品3

李四
商品1
商品2
商品3
商品4

。。。。

报表是按人员来分组的

首先打印第一张水晶报表(只能容下2项商品信息),但是,如果商品超过2个的话,要在A4的反面打印,即到了第二张报表(容下3项商品信息)。第一张与第二张报表的设计是不一样的。如果超过5项商品的话,又回到第一张水晶报表打印,一次类推。

同时,这边打印的话,使用代码来完成,并不是点击CrystalReportView上的打印按钮。

请问以上功能如何才能实现啊?好像很有难度,比较有挑战性哦。

求助高手,不知中秋节,大家都上不上网啊!!


--------------------编程问答-------------------- 今天大家都休息啊,可怜我没得休息 --------------------编程问答--------------------
引用 1 楼 rjfffzhang 的回复:
今天大家都休息啊,可怜我没得休息

中秋佳节还坚守岗位 --------------------编程问答--------------------
引用 2 楼 luols 的回复:
中秋佳节还坚守岗位


没办法,这个问题你还会啊,指导我一下吧。是不是水晶报表的资源,不用数据集,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个商品信息。 --------------------编程问答--------------------
引用 6 楼 babyt 的回复:
第一个问题需要进一步明确下。


用的是本地打印,这个打印机的名称如何获取?
--------------------编程问答-------------------- 正面打印的是rpt1,反面打印rpt2,然后要双面打印,有什么样的解决方案啊? --------------------编程问答--------------------
引用 8 楼 rjfffzhang 的回复:
引用 6 楼 babyt 的回复:
第一个问题需要进一步明确下。


用的是本地打印,这个打印机的名称如何获取?

 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;
}
--------------------编程问答-------------------- 今天,我听老师说水晶报表还要收费,是不是啊!那有没有免费的啊 ! --------------------编程问答--------------------
引用 7 楼 rjfffzhang 的回复:
第一个是正面,第二个是反面的。第一个开头部分是组信息,后面就是跟着2个商品信息,第二张,就是3个商品信息。


图片看不到.. --------------------编程问答--------------------
引用 12 楼 kangchuangbo 的回复:
今天,我听老师说水晶报表还要收费,是不是啊!那有没有免费的啊 !

参考: VS200X中水晶报表的授权说明 --------------------编程问答--------------------
引用 14 楼 luols 的回复:
。。。


我第一次发图片,不怎么会啊,忘记分行了。打印机看明白了,感谢~~~~

这个两个rpt交替打印还没弄明白,好难啊。如果两个报表加在一起的话,问题就简单了。


这是正面,第一行是人员信息,第二行和第三行显示商品信息



这是反面,三行,每行显示一项商品信息




我说的两个rpt合并起来,就是成一个rpt,如下,这样合并:



如此合并的话,就没有交替打印报表的问题了,因为两个rpt合并和变成一个肉rpt了。
不知大家明白了没,呼呼~~~ --------------------编程问答-------------------- 点  这里  上传图片

然后在 回复内容的工具栏里 点击“插入图片”图标,右边数过来第五个,把刚上传图片的图片地址引用过来即可。。 --------------------编程问答-------------------- 如果打印机支持双面打印。在打印机上设置一下。如果打印机提供相关的双面打印的API调用API实现双面打印。


我一般双面打印都是客户自己去点个按钮就可以了。你在打印时所做的东西就是直接一页一页的打印就行了。
补充:.NET技术 ,  图表区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,