2012-11-28 11 views
5

8.0.1.0で作成された何百ものレポートがあります(私は古いと思います)。データベースの場所を変更すると所有者スキーマがなくなります

これらのレポートを実行するためにVisual Studio 2010 C#アプリケーションを作成しました。それはWindowsアプリケーションです。 Web Appにいくつか問題があった。

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

私たちはTEST環境で作業しています。

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

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を設定しようとしたが、プログラムがロックアップします。だから何をすべきか分からない。 documentCrystalDecisions.CrystalReports.Engine.ReportDocumentある

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); 

+0

942エラーのメッセージは何ですか? –

+0

ビュー/テーブルが見つかりません。これは、スキーマが削除されているため、テーブルを見つける場所がわからないためです。 – madkow

答えて

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; 

    } 

:これを行うことによってそれを修正

+0

ありがとう!しかし、私は私たちが働くように見える別の方法を見つけたと思う。下記参照 – madkow

1

。ご協力いただきありがとうございます!