解决crystal report 的打印次数限制

2 篇文章 0 订阅
2 篇文章 0 订阅

遇到这个问题的原因打印次数已经达到了注册表HKEY_LOCAL_MACHINE/SOFTWARE/Crystal Decisions/10.2/Report Application Server/Server 中的PrintJobLimit中设置的75。 

解决方法:重启服务器,使打印计数归零。我们可以在程序中加入一个堆栈,每当加载一个报表时入栈,当堆栈中的报表数目达到注册表中的报表最大限制时,清空堆栈。另外在页面Unload时,释放报表资源。代码如下:

 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using CrystalDecisions;
using CrystalDecisions.CrystalReports;
using CrystalDecisions.CrystalReports.Engine;
public class ReportFactory
{
    private static int MAX_PRINT = 75;
    protected static Queue reportQueue = new Queue();
    protected static ReportDocument  CreateReport(Type reportclass)
    {
        object report = Activator.CreateInstance(reportclass);
        reportQueue.Enqueue(report);
        return (ReportDocument)report;
    }
    public static ReportDocument GetReport(Type reportclass)
    {
        if (reportQueue.Count >= MAX_PRINT)
        {
            for (int i = 1; i <= MAX_PRINT; i++)
            {
                ((ReportDocument)reportQueue.Dequeue()).Close();
                ((ReportDocument)reportQueue.Dequeue()).Dispose();
            }
        }
        return CreateReport(reportclass);
    }
}
 在加载报表的页面:
    protected void Page_Load(object sender, EventArgs e)
    {
        myReport = new ReportDocument();
        myReport = ReportFactory.GetReport(myReport.GetType());
    }
 
    protected void Page_Unload(object sender, EventArgs e)
    {
        if (myReport != null)
        {
            myReport.Close();
            myReport.Dispose();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值