Problema con Crystalviewer

martedì 02 gennaio 2007 - 12.41

Carlik Profilo | Junior Member

Salve a tutti,
Ho da poco cambiato le dll di crystal report del mio progetto,da 3.0 a 2.7(Cioè le mie dll stanno sotto C:\Programmi\File comuni\Business Objects\2.7\Managed invece che sotto C:\Programmi\File comuni\Business Objects\3.0\managed)
Adesso cerco di inserire un ReportViewer,e ricevo un errore a runtime nell'inizializzazione della form nella quale questo viewer è contenuto:

Impossibile trovare il metodo 'System.Drawing.Font CrystalDecisions.Shared.SharedUtils.GetSystemStatusFont(NonClientMetricsFontType)'.

Qualcuno ha mai avuto un problema del genere?

freeteo Profilo | Guru

ciao,
come avrai capito anche tu, il problema sta che il runtime probabilmente che hai nella GAC non è settato correttamente.

Quando dici "...Ho da poco cambiato le dll di crystal report.." cosa intendi precisamente, hai disinstallato e reinstallato? o hai sovrascritto alcune librerie...
Controlla la GAC, e magari se puoi debuggare vedi anche la versione della libreria di runtime se è corretta.

Per capirci qualcosa in questi labirinti di "dll" o dovrei dire "dll hell" anche in .net , un buon tool è questo:
http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx

praticamente riesci a vedere a quale file accede la tua applicazione e quindi dovresti riuscire a capire se va a prendere un file sbagliato...
ciao.

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

Carlik Profilo | Junior Member

ciao,
come avrai capito anche tu, il problema sta che il runtime probabilmente che hai nella GAC non è settato correttamente.

-->Non l'avevo capito,ma mi fido:-)

Quando dici "...Ho da poco cambiato le dll di crystal report.." cosa intendi precisamente, hai disinstallato e reinstallato? o hai sovrascritto alcune librerie...
--> In pratica CRXI mi fornisce 2 cartelle contenenti le stesse librerie:
C:\Programmi\File comuni\Business Objects\3.0\managed
e
C:\Programmi\File comuni\Business Objects\2.7\managed
Per cui non ho reinstallato niente(o forse una [la 2.7] è fornita dal framework 2.0 di Vb2005?)

Controlla la GAC, e magari se puoi debuggare vedi anche la versione della libreria di runtime se è corretta.

-->Come si fa il debug della gac?

Per capirci qualcosa in questi labirinti di "dll" o dovrei dire "dll hell" anche in .net , un buon tool è questo:
http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx

praticamente riesci a vedere a quale file accede la tua applicazione e quindi dovresti riuscire a capire se va a prendere un file sbagliato...

-->Fatto:i file sono sempre quelli attesi(non dico giusti,ma attesi sì!)

ciao.

->>Ciao e grazie

freeteo Profilo | Guru

>...
>--> In pratica CRXI mi fornisce 2 cartelle contenenti le stesse
>librerie:
non ne fornisce 2, probabilmente la 3.0 è quella di una versione successiva, che hai installato


>C:\Programmi\File comuni\Business Objects\2.7\managed
>Per cui non ho reinstallato niente(o forse una [la 2.7] è fornita
>dal framework 2.0 di Vb2005?)
Si la da il framework 2.0, probabilmente l'altra dir ce l'hai peche' hai isntallato anche la XI (magari la versione 30 giorni?)
scusami ma non ho capito cosa hai fatto allora, quando fai programmi in .net 2005 puoi usare 2 strade per aggiungerci il supporto a Crystal:
- pacchetto di installazione
- prerequisiti
per distribuire un'applicazione ci sono queste 2 strade, ma tu se non ho capito bene hai problemi non di distribuzione, ma proprio di funzionamento del programma nel tuo pc.
Se hai cambiato le librerie aggiungendo i componenti nella toolbox, controlla anche che nei riferimenti del progetto ci siano le stesse lib, che non sia quello il problema.
O che quelle librerie che ti trovi non siano effettivamente state installate correttamente, cosi' magari visual studio le linka dentro e ti visualizza il viewer, ma poi quando lo elabora a runtime si aspetta altre librerie che in realta' tu non hai..


>Controlla la GAC, e magari se puoi debuggare vedi anche la versione
>della libreria di runtime se è corretta.
>
>-->Come si fa il debug della gac?
non si puo' debiuggare la gac, erano 2 cose distinte:
- nella GAC vedi le versioni installate, quando visualizzi gli assembly presenti...
- nel designer vedi le proprieta' dei controlli che hai aggiunto e anche li vedi le versioni



>-->Fatto:i file sono sempre quelli attesi(non dico giusti,ma
>attesi sì!)
non ho capito, per me rimane sicuramente un problema di installazione sporca o incompleta, perche' un assembly che ha una versione tipicamente (anche se non sempre) vanno a cercare altri assembly della stessa versione, perche' serve proprio ad avere controllo sulle evoluzioni di una libreria.
ciao.

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

Carlik Profilo | Junior Member

>...
>--> In pratica CRXI mi fornisce 2 cartelle contenenti le stesse
>librerie:
non ne fornisce 2, probabilmente la 3.0 è quella di una versione successiva, che hai installato

--OK giustissimo


>C:\Programmi\File comuni\Business Objects\2.7\managed
>Per cui non ho reinstallato niente(o forse una [la 2.7] è fornita
>dal framework 2.0 di Vb2005?)
Si la da il framework 2.0, probabilmente l'altra dir ce l'hai peche' hai isntallato anche la XI (magari la versione 30 giorni?)
scusami ma non ho capito cosa hai fatto allora, quando fai programmi in .net 2005 puoi usare 2 strade per aggiungerci il supporto a Crystal:
- pacchetto di installazione
- prerequisiti
per distribuire un'applicazione ci sono queste 2 strade, ma tu se non ho capito bene hai problemi non di distribuzione, ma proprio di funzionamento del programma nel tuo pc.
Se hai cambiato le librerie aggiungendo i componenti nella toolbox, controlla anche che nei riferimenti del progetto ci siano le stesse lib, che non sia quello il problema.
O che quelle librerie che ti trovi non siano effettivamente state installate correttamente, cosi' magari visual studio le linka dentro e ti visualizza il viewer, ma poi quando lo elabora a runtime si aspetta altre librerie che in realta' tu non hai..

--Si, ho problemi nella mia applicazione,che volevo risolvere così:utilizzo la versione delle librerie installate col framework,così ho la massima compatibilità.
Il problema ora nasce in fase di impostazione dei parametri:
Ecco come agisco:

For i As Integer = 0 To UBound(m_mxParametriFields)
m_reportDocument.SetParameterValue(m_mxParametriFields(i), CStr(IfNull(m_mxParametriValues(i), "")))
Next

infine stampo così

'Bisogna settare la stampante giusta.
m_Printer = New Printing.PrinterSettings()
m_Printer.PrinterName = m_strNomeStampanti(s)
m_reportDocument.PrintOptions.PrinterName = m_Printer.PrinterName

m_reportDocument.PrintToPrinter(1, False, 0, 0)
m_Printer = Nothing

durante la PrintToPrinter nasce l'errore :

Errore nel file C:\DOCUME~1\CARLO~1.UNI\IMPOST~1\Temp\Reportfile{F6A69166-A4CD-41D4-924B-AC408388EDBB}.rpt:
Impossibile collegarsi: accesso ai parametri non corretto.
So ke è un problema noioso,ma aiutami,perche non ci dormo la notte!!

freeteo Profilo | Guru

>--Si, ho problemi nella mia applicazione,che volevo risolvere
>così:utilizzo la versione delle librerie installate col framework,così
>ho la massima compatibilità.
guarda che quelle che tiservono sono quelle della versione di visual studio, la 3.0 non sono quelle del framework 3.0, probabilmente sono quelle di Crystal XI, ma non centra con la versione del framework


>durante la PrintToPrinter nasce l'errore :
>
>Errore nel file C:\DOCUME~1\CARLO~1.UNI\IMPOST~1\Temp\Reportfile{F6A69166-A4CD-41D4-924B-AC408388EDBB}.rpt:
>Impossibile collegarsi: accesso ai parametri non corretto.
questo errore mi da l'idea che sia qualcosa relativo all'accesso al database, che non hai specificato i parametri di connessione, o cmq non gli hai settato i dati con il metodo "SetDataSource()" dell'oggetto reportDocument.
Hai creato il report collegandolo ad un database? se si controlla quanto mostrato qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=8681
in particolare la mia risposta dove dico "...hai 2 strade..." etc
ciao.

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

Carlik Profilo | Junior Member

questo errore mi da l'idea che sia qualcosa relativo all'accesso al database, che non hai specificato i parametri di connessione, o cmq non gli hai settato i dati con il metodo "SetDataSource()" dell'oggetto reportDocument.
Hai creato il report collegandolo ad un database? se si controlla quanto mostrato qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=8681
in particolare la mia risposta dove dico "...hai 2 strade..." etc
ciao.

->Hai centrato il problema,adesso l'eccezione restituita è quella relativa all'accesso al DB..:

CrystalDecisions.CrystalReports.Engine.LogOnException è stata individuata
Message="Accesso al database non riuscito."
Source="CrystalDecisions.ReportAppServer.DataSetConversion"
StackTrace:
in CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
in CrystalDecisions.ReportSource.EromReportSourceBase.HandleException(Exception exception)
in CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber(ReportPageRequestContext reqContext)
in CrystalDecisions.CrystalReports.Engine.FormatEngine.PrintToPrinter(Int32 nCopies, Boolean collated, Int32 startPageN, Int32 endPageN)
in CrystalDecisions.CrystalReports.Engine.ReportDocument.PrintToPrinter(Int32 nCopies, Boolean collated, Int32 startPageN, Int32 endPageN)
in ServytoPos.ClsPrintReport.Stampa(Boolean anteprima, Int32 numCopie) in C:\Documents and Settings\Carlo.UNISOFT\Documenti\Visual Studio 2005\Projects\ServytoPos\ServytoPos\Classi\clsPrintReport.vb:riga 303

Ma io setto il datasource!!

m_reportDocument.SetDataSource(m_dsDataSource)

Inoltre con un'altra versione delle librerie(la famosa 3.0 :-)) lo stesso codice stampa tranquillamente..Solo che non posso più utilizzarla!!

Carlik Profilo | Junior Member

Ok sono riuscito a fare tutto:
Le stampe mi funzionano,sia semplici che con i sotto report.
Il Viewer funge anch'esso,e il bello è che il tutto non dipendeva da me,ma da CRXI
Infatti il VB2005 funziona bene solo con CRXIR2
(a saperlo prima evitavo una settimana di nervi)

freeteo Profilo | Guru

ok bene a sapersi, anzi grazie di averlo segnalato, sinceramente non lo sapevo...programmo in c# e non ho mai avuto problemi fortunatamente..
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