2012-11-28 17 views
5

Abbiamo centinaia di rapporti creati in 8.0.1.0 (so che sono vecchi).La modifica della posizione del database elimina lo schema proprietario

Abbiamo creato un'applicazione C# di Visual Studio 2010 per eseguire questi report. È un'applicazione per Windows. Ha avuto qualche problema con l'app Web.

I report sono tutti salvati nell'ambiente PROD.

Stiamo lavorando in un ambiente di prova.

Stiamo utilizzando un ambiente Oracle e tutti i report utilizzano la connessione di Oracle Server.

Quando eseguiamo i report tramite C#, procediamo e cambiamo tutte le posizioni del database nel nostro ambiente TEST. Quando ciò accade, le informazioni "Proprietario" (schema) vengono eliminate. Il report ha esito negativo con un errore 942.

Ora se non cambiamo il database, conservalo come PROD, tutto funziona perfettamente. Sembra che cambiando il database le informazioni sullo schema vengano eliminate.

Qualsiasi idea. Ho cercato in giro e non riesco a trovare una soluzione.

frammento di codice:

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; 

     } 

ho cercato di impostare il crTable.Location ma il programma si blocca. Quindi non sono sicuro di cosa fare.

+0

Qual è il messaggio per l'errore 942? –

+0

Impossibile trovare la vista/le tabelle. È perché lo schema viene eliminato in modo che non sappia dove trovare le tabelle. – madkow

risposta

1

In passato abbiamo cambiato con successo i parametri di connessione in questo modo:

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

dove document è CrystalDecisions.CrystalReports.Engine.ReportDocument.

+0

Grazie! Ma penso che abbiamo trovato un modo diverso che sembra funzionare. Vedi sotto – madkow

1

è stato risolto in questo modo:

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; 

    } 

stavo Impostazione della posizione in modo non corretto. Grazie per l'aiuto!

Problemi correlati