2012-11-28 8 views
5

Wir haben Hunderte von Berichten erstellt in 8.0.1.0 (ich weiß, dass sie alt sind).Das Ändern des Datenbankstandorts löscht das Eigentümerschema

Wir haben ein Visual Studio 2010 C# Anwendung diese Berichte ausführen. Es ist eine Windows-App. Hatte einige Probleme mit der Web App.

Die Berichte werden alle unter der ART-Umgebung gespeichert.

Wir arbeiten in einer Testumgebung.

Wir verwenden eine Oracle-Umgebung und alle Berichte verwenden, um die Oracle-Server-Verbindung.

Wenn wir die Berichte über C# laufen wir hergehen und die Datenbank, die alle Standorte ändern Umgebung für unsere TEST. Wenn dies geschieht, wird die Information "Besitzer" (Schema) gelöscht. Der Bericht schlägt mit einem Fehler 942 fehl.

Nun, wenn wir es als ART die Datenbank nicht ändern, halten, funktioniert alles perfekt. Es scheint, dass durch das Ändern der Datenbank die Schemainformationen gelöscht werden.

Irgendwelche Ideen. Ich habe herumgesucht und kann keine Lösung finden.

Code-Snippet:

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; 

     } 

Ich habe versucht, die crTable.Location zu setzen, sondern das Programm abstürzt. Also nicht sicher was ich machen soll.

+0

Was ist die Nachricht für den Fehler 942? –

+0

Die Ansicht/Tabellen kann nicht gefunden werden. Das liegt daran, dass das Schema gelöscht wird, sodass es nicht weiß, wo die Tabellen zu finden sind. – madkow

Antwort

1

In der Vergangenheit haben wir erfolgreich geändert Verbindungsparameter durch dies zu tun:

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

wo documentCrystalDecisions.CrystalReports.Engine.ReportDocument ist.

+0

Danke! Aber ich denke, wir haben einen anderen Weg gefunden, der zu funktionieren scheint. Siehe unten – madkow

1

es wird behoben, indem Sie diese:

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; 

    } 

ich die Lage falsch einstellt. Danke für Ihre Hilfe!

Verwandte Themen