5

8.0.1.0 で作成された何百ものレポートがあります (それらが古いことはわかっています)。

これらのレポートを実行する Visual Studio 2010 C# アプリケーションを作成しました。Windows アプリです。Web アプリに問題がありました。

レポートはすべて PROD 環境で保存されます。

テスト環境で作業しています。

Oracle 環境を使用しており、すべてのレポートは Oracle Server 接続を使用しています。

C# を使用してレポートを実行するときは、先に進み、すべてのデータベースの場所を TEST 環境に変更します。これが発生すると、「所有者」(スキーマ) 情報が削除されます。レポートは 942 エラーで失敗します。

データベースを変更せず、PROD のままにしておくと、すべてが完全に機能します。データベースを変更することで、スキーマ情報が削除されているようです。

何か案は。私は周りを探していて、解決策を見つけることができません。

コードのスニペット:

connectionInfo.DatabaseName = "";
connectionInfo.ServerName = <SERVER>;
connectionInfo.UserID = <USER>;
connectionInfo.Password =  <PWORD>;

foreach (Table crTable in crTables)
        {
            crTableLogOnInfo = crTable.LogOnInfo;
            crTableLogOnInfo.ConnectionInfo = connectionInfo;
            crTable.ApplyLogOnInfo(crTableLogOnInfo);

            // if you wish to change the schema name as well, you will need to set Location property as follows:
             //crTable.Location = "<SCHEMA>." + crTable.Name;

        }

crTable.Location を設定しようとしましたが、プログラムがロックされます。何をすべきかわからない。

4

2 に答える 2

1

以前は、次のようにして接続パラメーターを正常に変更しました。

CrystalDecisions.Shared.TableLogOnInfo info = document.Database.Tables[iTable].LogOnInfo.Clone() as CrystalDecisions.Shared.TableLogOnInfo;

info.ConnectionInfo.ServerName = <SERVER>;
info.ConnectionInfo.DatabaseName = "";
info.ConnectionInfo.UserID = <USER>;
info.ConnectionInfo.Password = <PASSWORD>;

document.Database.Tables[iTable].ApplyLogOnInfo(info);

はどこdocumentですかCrystalDecisions.CrystalReports.Engine.ReportDocument

于 2012-11-28T22:20:16.483 に答える
1

これを行うことで修正しました:

connectionInfo.DatabaseName = "";
connectionInfo.ServerName = <SERVER>;
connectionInfo.UserID = <USER>;
connectionInfo.Password =  <PWORD>;

foreach (Table crTable in crTables)
    {
        crTableLogOnInfo = crTable.LogOnInfo;
        crTableLogOnInfo.ConnectionInfo = connectionInfo;
        crTable.ApplyLogOnInfo(crTableLogOnInfo);

        // if you wish to change the schema name as well, you will need to set   Location property as follows:
         //crTable.Location = "<SCHEMA>." + crTable.Name;
         crTable.Location = "<SCHEMA>." + crTable.LogOnInfo.TableName;

    }

場所を正しく設定していませんでした。ご協力いただきありがとうございます!

于 2012-11-29T19:54:10.790 に答える