2012-11-28 102 views
5

我們在8.0.1.0中創建了數百個報告(我知道它們很舊)。更改數據庫位置將刪除所有者模式

我們創建了一個Visual Studio 2010 C#應用程序來運行這些報告。這是一個Windows應用程序。在Web應用程序中遇到了一些麻煩。

報告全部保存在PROD環境下。

我們正在測試環境中工作。

我們正在使用Oracle環境,並且所有報告都使用Oracle Server連接。

當我們通過C#運行報表時,我們繼續前進,並將所有數據庫位置更改爲我們的測試環境。發生這種情況時,將刪除「所有者」(模式)信息。報告失敗,出現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但程序鎖定。所以不知道該怎麼做。

+0

942錯誤消息是什麼? –

+0

找不到視圖/表格。這是因爲架構正在被刪除,所以它不知道在哪裏找到表。 – madkow

回答

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

其中documentCrystalDecisions.CrystalReports.Engine.ReportDocument

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

    } 

我被錯誤地設置位置。謝謝你的幫助!