0
レポートと同じコードを使用してレポートデータソースを設定し、5つのレポートが機能し、本番環境を指すことができる8つのレポートがあります。残りの3つのレポートでは、データベースの検証とデータベースの更新を実行して再実行しましたが、これらのレポートを実稼働環境で実行すると、DEV環境からデータが戻されます。Crystal Report datsource ConnectionInfoで設定されていません - 正しいデータベースに接続しません。
私のデータソースがどのように設定されているかは次のとおりです。 私は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;
}
}