2016-12-19 11 views
2
protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Clear(); 
     Response.Buffer = true; 
     if (IsPostBack) 
     { 
      if (dllselection.SelectedValue == "3") 
      { 
       ReportDocument myDataReport = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
       myDataReport.Load(Server.MapPath("OJT.rpt")); 
       myDataReport.SetDatabaseLogon("intranet", "[email protected]", "192.168.2.5", "INTRANET"); 
       myDataReport.SetParameterValue("T-ID", TextBox1.Text); 
       CrystalReportViewer1.ReportSource = myDataReport; 
       CrystalReportViewer1.DataBind(); 

      } 
      else if (dllselection.SelectedValue == "4") 
      { 
       ReportDocument myDataReport = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
       myDataReport.Load(Server.MapPath("TEFF.rpt")); 
       myDataReport.SetDatabaseLogon("intranet", "[email protected]", "192.168.2.5", "INTRANET"); 
       myDataReport.SetParameterValue("T-ID", TextBox1.Text); 
       CrystalReportViewer1.ReportSource = myDataReport; 
       CrystalReportViewer1.DataBind(); 


      } 
     } 
    } 

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Response.Clear(); 
     Response.Buffer = true; 
if (dllselection.SelectedValue == "3") 
      { 
       ReportDocument myDataReport = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
       myDataReport.Load(Server.MapPath("OJT.rpt")); 
       myDataReport.SetDatabaseLogon("intranet", "[email protected]", "192.168.2.88", "INTRANET"); 
       myDataReport.SetParameterValue("T-ID", TextBox1.Text); 
       CrystalReportViewer1.ReportSource = myDataReport; 
       CrystalReportViewer1.DataBind(); 

      } 
      else if (dllselection.SelectedValue == "4") 
      { 
       ReportDocument myDataReport = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
       myDataReport.Load(Server.MapPath("TEFF.rpt")); 
       myDataReport.SetDatabaseLogon("intranet", "[email protected]", "192.168.2.88", "INTRANET"); 
       myDataReport.SetParameterValue("T-ID", TextBox1.Text); 
       CrystalReportViewer1.ReportSource = myDataReport; 
       CrystalReportViewer1.DataBind(); 


      } 
} 

私は取得していますエラー:Crystalレポートは、ジョブの処理限界超え

最大レポート処理ジョブがシステム 管理者に到達したことにより、設定された制限「

は、トピックを研究しました。オンライン私はいくつかの解決策を見つけました。具体的にはHKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 12.0\Report Application Server\InprocServer\PrintJobLimitを "-1"に設定しましたが、解決策を追加してコードを閉じるとこの解決策は機能しません。空になります。 以下は私のaspxコードです:

<asp:DropDownList ID="dllselection" onchange="javascript:return dropdown(this);" runat="server" Style="border: groove" CssClass="form-control" AutoPostBack="true"> 
        <asp:ListItem Text="On Job Training" Value="3"></asp:ListItem> 
        <asp:ListItem Text="Training Effectiveness Form" Value="4"></asp:ListItem> 
       </asp:DropDownList> 
<asp:Button ID="Button1" runat="server" Text="Generate" CssClass="btn btn-success" OnClick="Button1_Click" /> 
     <div id="dvReport"> 
      <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" ToolPanelView="None" EnableDatabaseLogonPrompt="False" PrintMode="Pdf" /> 
     </div> 
+0

レポートソースの設定をpage_initイベントに移動してください。 – reckface

答えて

2

はい、これは仕様です。 .netフレームワーク用に提供されているCrystalランタイムで許可されているmaximum number of printsがあります。それが起こらないようにする方法は、ページアンロードイベントで完全にクリーンアップすることです。

最初に、ReportDocument(myDataReport)をページ内のプライベートフィールドに昇格させます。その後、レポートを処分することができ、その後、これをnullに設定します:

protected void Page_UnLoad(object sender, EventArgs e) 
{ 
    CrystalReportViewer1.Dispose(); 
    CrystalReportViewer1 = null; 
    myDataReport.Close(); // I can't remember if this is part of the reportDucment class 
    myDataReport.Dispose(); 
    myDataReport = null; 
    GC.Collect(); // I forgot this line 
} 

編集はあなたがの%temp%に行けばあなたはこの問題を持って伝えることができますGC.Collect

を追加しました(あなたのケースでは異なる可能性があります)、ファイル名にGUIDが付加されたレポートのコピーが複数ある場合は、それらをすべて削除してから開始してください。上記のクリーンアップを毎回実行すると、これらのファイルは蓄積されません。

+0

thx man、peace:) – KyLim

関連する問題