水晶报表-更改数据库连接而无需先加载报表

时间:2018-09-19 12:38:22

标签: c# database crystal-reports crystal-reports-xi

我有一个基于存储过程的水晶报表。它已经开发多年,并且服务器不再有效。有几个用户使用此报告,并在自己的服务器上拥有自己的数据库。

即使我尝试在代码(C#)中更改数据库连接,我仍然必须等待1分15秒才能使报告加载和超时。

我已经用谷歌搜索了这个问题,但是我发现的建议似乎没有用。

我的原始代码:

_document = new ReportDocument();
//This Load takes 1 minute and 15 seconds!!!
_document.Load(filePath);
IConnectionInfo dataSourceConnection = _document.DataSourceConnections[0];
_document.SetParameterValue("@ali_id", worklistID);
dataSourceConnection.SetLogon(_environment.Username, _environment.Password);
dataSourceConnection.SetConnection(_environment.DatabaseServer, _environment.DatabaseName, false);

如果我改为尝试以下代码:

_document = new ReportDocument();
// Now, setting FileName takes 1 minute 15 seconds!!
_document.FileName = filePath;
foreach(Table table in _document.Database.Tables) {
    table.LogOnInfo.ConnectionInfo.UserID = _environment.Username;
    table.LogOnInfo.ConnectionInfo.Password = _environment.Password;
    table.LogOnInfo.ConnectionInfo.ServerName = _environment.DatabaseServer;
    table.LogOnInfo.ConnectionInfo.DatabaseName = _environment.DatabaseName;                    
}
foreach(ReportDocument sr in _document.Subreports) {
    sr.SetDatabaseLogon(_environment.Username, _environment.Password, _environment.DatabaseServer, _environment.DatabaseName);
}
_document.SetDatabaseLogon(_environment.Username, _environment.Password, _environment.DatabaseServer, _environment.DatabaseName);
_document.Load(filePath);

我试图从报表中删除子报表,以使其尽可能简单,但是没有运气。

我似乎无法在报告中找到任何超时时间设置来将其更改为例如15秒。

我使用Crystal报表XI R2来开发报表。

如果我更改报告以使用现有的数据库服务器,则报告加载时间约为1秒。

因此,我想更改数据库服务器而不必加载报告并等待超时,或者将超时减少到15秒左右。

0 个答案:

没有答案