2012-11-28 9 views
5

Mamy setki raportów utworzonych w wersji 8.0.1.0 (wiem, że są stare).Zmiana położenia bazy danych powoduje utratę schematu właściciela

Stworzyliśmy aplikację Visual Studio 2010 C# do uruchamiania tych raportów. To aplikacja dla systemu Windows. Miałem problemy z aplikacją internetową.

Wszystkie raporty są zapisywane w środowisku PROD.

Pracujemy w środowisku TEST.

Używamy środowiska Oracle, a wszystkie raporty korzystają z połączenia z serwerem Oracle.

Po uruchomieniu raportów za pośrednictwem C# kontynuujemy i zmieniamy wszystkie lokalizacje bazy danych w naszym środowisku TEST. W takim przypadku informacja "Właściciel" (schemat) zostaje usunięta. Raport kończy się niepowodzeniem z błędem 942.

Teraz, jeśli nie zmienimy bazy danych, zachowaj ją jako PROD, wszystko działa idealnie. Wygląda na to, że po zmianie bazy danych informacje o schemacie są usuwane.

Wszelkie pomysły. Szukałem w pobliżu i nie mogę znaleźć rozwiązania.

fragment kodu:

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; 

     } 

Próbowałem ustawić crTable.Location ale program się zawiesza. Więc nie wiem, co robić.

+0

Jaki jest komunikat dotyczący błędu 942? –

+0

Nie można znaleźć widoku/tabel. Dzieje się tak, ponieważ schemat jest upuszczany, więc nie wie, gdzie znaleźć tabele. – madkow

Odpowiedz

1

W przeszłości pomyślnie zmienione parametry połączenia w ten sposób:

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

gdzie document jest CrystalDecisions.CrystalReports.Engine.ReportDocument.

+0

Dzięki! Ale myślę, że znaleźliśmy inny sposób, który wydaje się działać. Zobacz poniżej – madkow

1

Naprawiono go w ten sposób:

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; 

    } 

byłem nieprawidłowo ustawienie gości. Dzięki za pomoc!