0
我有8個報表使用完全相同的代碼來設置報表數據源,其中5個報表工作並能夠指向生產環境。 3個報告的其餘部分,我運行並重新運行數據庫驗證和數據庫更新,但是當我在生產環境中運行這些報告時,它們將數據從DEV環境中帶回。由ConnectionInfo設置的Crystal報表數據源沒有被設置 - 沒有連接到正確的數據庫
這是我的數據源如何設置。 我在所有8個水晶報告中調用存儲過程。 我已經做了非常詳細的調試,並驗證了數據源數據正在獲取正確的信息,所以缺少了什麼。
string database = ConfigurationManager.AppSettings[env + "Database"].ToString();
string server = ConfigurationManager.AppSettings[env + "Server"].ToString();
CrystalReportViewer1.ParameterFieldInfo = fields;
rptDoc.Load(Server.MapPath(report));
ConnectionInfo connectionInfo = Reports.GetConnectionInfo(server, database, "userID", "password");
//connectionInfo.Attributes = attributes;
connectionInfo.Type = ConnectionInfoType.SQL;
SetDBLogonForReport(connectionInfo, env);
CrystalReportViewer1.ReportSource = rptDoc;
private void SetDBLogonForReport(ConnectionInfo oConnectionInfo, string env)
{
try
{
TableLogOnInfos oTableLogOnInfos = CrystalReportViewer1.LogOnInfo;
string[] sparams = new string[]{
};
foreach (CrystalDecisions.CrystalReports.Engine.Table oTable in rptDoc.Database.Tables)
{
if (oTable.LogOnInfo.ConnectionInfo.ServerName == oConnectionInfo.ServerName)
{
TableLogOnInfo oTableLogOnInfo = oTable.LogOnInfo;
oTableLogOnInfo.ConnectionInfo = oConnectionInfo;
oTable.ApplyLogOnInfo(oTableLogOnInfo);
// oTable.Location = String.Format("{0}.dbo.{1}", oConnectionInfo.DatabaseName, oTable.Name);
bool b = oTable.TestConnectivity();
if (!b)
{
invokeErrorLogger(sparams, env);
}
}
}
}
catch
{
throw;
}
}