首页 新闻 赞助 找找看

水晶报表批量打印

0
悬赏园豆:100 [已关闭问题]

RT,拜托了,请越详细越好,有实例更好

问题补充: hehe,是我发的邮件,网上的相关我已经找了2天了,你给你这份,我也看过,但不适合我。。。。
★子谦★的主页 ★子谦★ | 初学一级 | 园豆:5
提问于:2008-09-17 08:42
< >
分享
其他回答(2)
0

是你发我邮件了?

批量我没有到过,我也查了一下,有关案例不知道适合不适合你

 

Code
现有环境条件及客户需求:
B
/S系统中水晶报表单个打印已经完成,现在客户要求在现有基础上实现报表的批量打印,即选择多条记录点击"打印"按钮后即可以一次性打印所有报表。

分析与思考:
1.B/S中要实现批量打印首先排除传统的报表预览打印,只有通过循环报表关键字生成报表后直接打印,但C#中PrintToPrinter方法只能打印至服务器端打印机,通过在服务器端安装各客户端打印机驱动并提供用户选择打印机界面即可解决问题。
2.如果选择报表过多,循环势必过长,这样用户等待时间就长,为了让用户感觉等待时间为0可用后台进程处理,即把循环打印的方法放入新创建的进程中。

开发过程中注意到有关事项:
1.创建报表后直接打印至服务端
ReportDocument rDoc
= 创建的报表;
rDoc.PrintOptions.PrinterName
= 选择打印机名称;
rDoc.PrintToPrinter(
1,false,0,999);
2.枚举服务端打印机列表
private void getPrintList()
{
if(System.Drawing.Printing.PrinterSettings.InstalledPrinters.Count == 0)
{
this.Alert("服务器没有安装打印机!");
return;
}
PrintDocument pDoc
= new PrintDocument();
string strDefaultPrinter = pDoc.PrinterSettings.PrinterName;//获取默认打印机
foreach(string strPrinter in PrinterSettings.InstalledPrinters)
{
lbxPrintList.Items.Add(strPrinter);
if(strPrinter == strDefaultPrinter)
{
lbxPrintList.SelectedValue
= strPrinter;
}
}
}
3.创建线程
1) 线程中方法要用到的参数必须通过Session获取
2) HttpContext.Current方法在线程中的方法中无效,须在创建线程前调用(通过创建新类或Session传递)
Thread trd
= new Thread(new ThreadStart(PintTask));

 

CSDN链接:

http://topic.csdn.net/u/20080408/11/7ce748c9-a791-4683-b1e9-5a066dc972a7.html

zjy | 园豆:3194 (老鸟四级) | 2008-09-17 08:57
0

去我空间看看,我写过。net的水晶报表,也是关于批量打印的

不过不晓得是不是和你需要的一样

http://neilvension.cnblogs.com

沉默的心 | 园豆:205 (菜鸟二级) | 2008-09-17 13:35
0

水晶报表虽然有批量报表打印功能,但是对于一次批量打印出多张不同报表,同一张报表采用不同参数多次打印等方式,均需经过单独编程才能实现;一些较简单的分片式报表打印仅支持纵向分页,不支持横向分页;不支持分栏打印;不支持一纸多页打印;不支持末页不足空行;支持缩放;支持精确打印;总体比较下来,水晶的这一功能没有finereport好用

ilovejava | 园豆:224 (菜鸟二级) | 2015-01-28 13:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册