ReportDocument.Load() 加载时间过长。c#.net 中的 RPT 文件

ReportDocument.Load() taking too much time to load .RPT file in c#.net

提问人:s.k.Soni 提问时间:11/3/2023 最后编辑:marc_ss.k.Soni 更新时间:11/4/2023 访问量:25

问:

ReportDocument cryRpt = new ReportDocument();

SqlCommand MyCommand = new SqlCommand();

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(cn.ConnectionString);
ConnectionInfo crConnectionInfo = new ConnectionInfo();

TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
string mtmptbl = "TmpAccountReport";

string qrySelBalanceSheet = "select * from tbl_TmpLedgerReport " + System.Environment.NewLine;

MyCommand = new SqlCommand(qrySelBalanceSheet, cn);
MyCommand.CommandType = CommandType.Text;

cn.Open();
MyCommand.ExecuteNonQuery();
cn.Close();

crystalReportViewer1.RefreshReport();
string crReportPath = Application.StartupPath.Replace("bin\\Release", "") + "\\Report";
cryRpt.Load(crReportPath + "\\LedgerAccountReport.rpt");

builder.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["con"];
string dbName = builder.InitialCatalog;
string dbDataSource = builder.DataSource;
string userID = builder.UserID;
string pass = builder.Password;
crConnectionInfo.ServerName = dbDataSource;
crConnectionInfo.DatabaseName = dbName;
crConnectionInfo.UserID = userID;
crConnectionInfo.Password = pass;

Tables Crtables;

Crtables = cryRpt.Database.Tables;

foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in Crtables)
{
    crtableLogoninfo = CrTable.LogOnInfo;
    crtableLogoninfo.ConnectionInfo = crConnectionInfo;
    CrTable.ApplyLogOnInfo(crtableLogoninfo);
}

crystalReportViewer1.ReportSource = cryRpt;                

根据我的代码,我通过 C# 中的 sap crystal report 显示报告。现在,在某个时间点,我的代码在这一行卡住了 2-3 分钟

cryRpt.Load(crReportPath + "\\LedgerAccountReport.rpt");

(我通过调试代码看到)并且从中加载报告需要更多时间。

令人惊讶的是,这种情况有时只发生在工作之间。

有什么想法可以解决这个问题吗?

C# .NET Crystal-Reports 桌面应用程序 RPT

评论


答:

0赞 mweber 11/4/2023 #1

几年前,我遇到了类似的问题,即每次从 .NET 应用程序中首次调用时,报告都会呈现缓慢。我试图在应用程序启动时加载一个虚拟报告,但没有太大效果。事实证明,Crystal 组件试图连接一个 Verisign URL,但该 URL 被我客户的防火墙设备阻止,因此 Crystal 一直等到此连接超时。 因此,我建议您查看网络流量,或者检查当应用程序在没有防火墙限制的环境中运行时问题是否仍然存在。