Lentezza assurda nel caricare un report

sabato 26 maggio 2007 - 12.35

MartinoLuccarelli Profilo | Newbie

Ho sviluppato un'applicativo sotto vs2005 che utilizza CR di visual studio per i report.

L'operazione di Load del file RPT,quando non sono collegato al server di sviluppo, ma al server del cliente, è estremamente lenta?

Lo stesso programma sviluppato con von Vs2003 non mi dà questo probelma

Come posso risolvere il problema?

freeteo Profilo | Guru

ciao,
potrebbero essere diverse le cause di questo problema, anche se diciamo che una release successiva tipicamente migliora la precedente quindi non dovrebbe verificarsi

Cmq sia, ti chiedo, cosa intendi per operazione di "load" del file, intendi carichi il file da disco o quando visualizzi il report intero, ovvero lui poi ti visualizza le varie pagine?

Prova a postare 1po di codice che vediamo se puo' essere d'aiuto per formulare delle ipotesi...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

MartinoLuccarelli Profilo | Newbie

Ecco la parte di codice. Testando il prg con il debig mi sono accorto che quando viene richiamata la
funzione reportDocument1.Load(...) resta in attesta per circa 60 secondi

{
.....

reportDocument1 = new ReportDocument();
reportDocument1.Load(sNomeReport); //Resta in attesa per 60 sec
OnLogon(....)

....
}



public bool OnLogon(CrystalDecisions.Windows.Forms.CrystalReportViewer _crViewever,ReportDocument _rpt ,string _sUserID,string _sPwd,string _sServerName, string _sDatabase,ref ControlloUtente.UC_ViewLOG _ucLog)

{
_ucLog.uM_Add("Cambio Dati Accesso Database (Server="+_sServerName+";Database="+_sDatabase+";User="+_sUserID+";Password="+_sPwd+")",false);


Sections crSections;

ReportObjects crReportObjects;

SubreportObject crSubreportObject;

ReportDocument crSubreportDocument;

TableLogOnInfo crTableLogOnInfo;


ConnectionInfo crConnectioninfo = new ConnectionInfo();


//pass the necessary parameters to the connectionInfo object

crConnectioninfo.ServerName = _sServerName;

crConnectioninfo.UserID = _sUserID;

crConnectioninfo.Password = _sPwd;

crConnectioninfo.DatabaseName = _sDatabase;


foreach( CrystalDecisions.CrystalReports.Engine.Table tbCurrent in _rpt.Database.Tables)

{

_ucLog.uM_Add("OK - Settaggio "+tbCurrent.Name,false);



crTableLogOnInfo = tbCurrent.LogOnInfo;

crTableLogOnInfo.ConnectionInfo = crConnectioninfo;

tbCurrent.ApplyLogOnInfo(crTableLogOnInfo);


}
}

freeteo Profilo | Guru

ciao,
sinceramente quell'operazione legge un file su disco e general la classe in memoria con quelle proprieta' che rispecchiano il report, in modo che da codice tu possa accedere alle varie parti del report.
Ma solitamente non ci dovrebbe mettere piu' di qualche secondo, anche con report complessi, percio' mi viene un dubbio che non ci siano lentezze di caricamento proprio da windows, hai provato a dare un path diverso al report?

Opppure controlla che ci sono anche degli overload del metoto "Load" dove gli passi magari di non fare la copia temporanea...

Infine potresti provare a vedere se succede anche copiando nella stessa dir il file prima di caricarlo...giusto perche' magari da rete è lento a fare il parsing binario del file...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

MartinoLuccarelli Profilo | Newbie

ciao,

il file rpt non si trova sul server ma sul pc dove viene lanciata la stampa, e precisamente in una sottocartella chiamata "Stampe", all'interno della cartella che contiene l'eseguibile.

La cosa strana è che con il programma sviluppato con il VS2003 questo problema di lentezza non si presenta. Può essere qualcosa legato alla versione di Cr per VS2005??

Grazie

freeteo Profilo | Guru

ciao,
ma il report è rimasto della versione 2003? se provi ad aprirlo con visual studio 2005 lui dovrebbe chiederti di fare l'upgrade del formato (tu fatti cmq una copia di sicurezza ovviamente)...oppure l'hai gia' fatto?

Sinceramente non ho avuto problemi di lentezza soprattutto nel "load", tipicamente è quando renderizza i vari record la parte piu' lenta...

Altra cosetta da verificare: quanto grande è il file? perche' se lasci il flag "salva dati con report" lui si salva anche dei dati, appensantendo il file...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

MartinoLuccarelli Profilo | Newbie

Il file è rimasto nella versione vecchia.
Può essere questo il problema?

Grazie

freeteo Profilo | Guru

mah sinceramente non lo so, la cosa che mi lascia perplesso è che succede nel "load" come ti dicevo, quindi quando parsa il file e crea la classe...magari se rimane nella versione 2003 ci mette di piu' perche' sicuramente hanno cambiato il formato del file...

Cmq non ti resta che provare, facendoti ovviametne una copia di sicurezza che non si sa mai...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

MartinoLuccarelli Profilo | Newbie

Ho anche fatto un'altra prova.

Premetto che la stampa si interfaccia ad un database MSDE.

Ho installato il database su una macchina della rete e ho fatto in modo che il programma,installato su questa macchina, e quindi le stampe, si interfacci a questo database.

Lanciando la stampa (sempre la versione fatta con il 2003) l'apertura è veloce se il pc vede in rete il pc-database utilizzato per costruire la stampa. Se infatti disattivo la rete l'apertura della stampa ritorna ad essere lentissima.

Questo mi porta a concluedere, che quando faccio il load del file rpt, il crystal report cerchi (per circa 60 secondi, questo tempo è stabile) la macchina e il database utilizzato nella costruzione della stampa.

Purtroppo ho provato a dargli prima del load i parametri di connessione, ma mi sembra che non sia possibile.

Ciao

freeteo Profilo | Guru

ciao,
stavo guardando se nel forum ufficiale della businessobjects ci fosse qualcosa a riguardo, e qui dicono che con il servicepack hanno sistemato un problema analogo:
http://technicalsupport.businessobjects.com/KanisaSupportSite/search.do?cmd=displayKC&docType=kc&externalId=c2015184&sliceId=&dialogID=1064291&stateId=1 0 1060325

tu hai gia' provato anche ad aggiornarti il runtime?
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

MartinoLuccarelli Profilo | Newbie

Avevo letto le service pack e non l'ho installato perchè parla di crystal report 10 e non di crystal report for vs2005. Nella pagina dei SP infondo parla di SP colo per Crystal report Vs2003 e Vs2002 .

Pensi che possa installare la service pack per CR 10?

Grazie

freeteo Profilo | Guru

ciao,
si diciamo che la versione di visual studio 2005 è una 10 di fatto, pero' non mi fiderei tanto, a parte che se non va bene il servicepack dovrebbe dirtelo, ma cmq io non lo farei.

Pero' hai gia' guardato se c'e' qualcosa da menu' Crystal Report->Check 4 update?
non ho molte alternative, questo comportamento "anomalo" da me non si presenta, anche provando varie volte...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

MartinoLuccarelli Profilo | Newbie

ho provato a salvare il file con la versione 2005 impostando il time out a 5 secondi e sembra che il problema sia risolto.

Ti ringrazio per il supporto che mi hai fornito, e ne approffitto per chiederti se riesci a darmi qualche dritta per l'altro problema che ho postato (problema su Windows Vista)

Grazie

freeteo Profilo | Guru

ok ottimo, probabilmente era proprio un problema di parsing del file con una versione vecchia...
Per il problema di vista, ok, ti rispondo nel thread relativo.

ps: per questo thread accetta una risposta cosi' marchiamo il thread come risolto.
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5