Visualizzazione Immagine Dinamica su Report

lunedì 23 febbraio 2009 - 11.16

Giamp72 Profilo | Junior Member

Avvio il mio report da vb.net in questo modo:

NomeModulo = "test.rpt"
Dim stReport As New CrystalReports.Engine.ReportDocument
stReport.Load(sPercorsoStampe & "\" & NomeModulo)

Dim login As CrystalDecisions.Shared.TableLogOnInfo
login = stReport.Database.Tables(0).LogOnInfo
login.ConnectionInfo.ServerName = "MySrv"
stReport.Database.Tables(0).ApplyLogOnInfo(login)

stReport.RecordSelectionFormula = gsMiaFormula

Anteprima.RefreshReport()
Anteprima.ReportSource = stReport
Anteprima.ShowFirstPage()

Funziona tutto alla perfezione però ultimamente mi è sorto questo problema:
devo inserire nel modulo un'immagine dinamicamente, cosi ho aggiunto un campo al mio db con path e nome dell'immagine da caricare.
ho inserito un campo picture nel modulo, impostato graphic location assegnando il valore del campo aggiunto.
La cosa strana è che se faccio l'anteprima, da CrystalReport vedo le immagini correttamente, mentre stampando dalla mia app non viene
caricata alcuna immagine...

Idee?? Qualcuno ha mai creato stampe con immagini dinamiche avviandole da VB.NET??

grazie a tutti
Giamp72

freeteo Profilo | Guru

Ciao, perdona il ritardo nella risposta, forse avrai già risolto cmq ti rispondo ugualmente.


>Idee?? Qualcuno ha mai creato stampe con immagini dinamiche avviandole
>da VB.NET??
io usavo una tecnica diversa dovuta al fatto di non avere la proprietà di image location di cui parli tu, quindi ho dovuto fare a mano diciamo, e lo trovi qui:
http://www.dotnethell.it/tips/Crystal-Reports-BLOB.aspx

come vedi dall'esempio viene creato un campo immagine come blob nella definizione del report e poi viene usata una DataTable passando ad una cella direttamente lo stream di byte di quell'immagine...1po ingarbugliata come cosa ma cmq efficace.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Giamp72 Profilo | Junior Member

più o meno credo di aver capito cosa devo fare e ci provo.. però nella tua risposta vedo che il caricamento al volo con la versione XI dovrebbe andare.. ed io sto usando proprio la versione XI... inoltre la cosa strana è che se faccio un preview all'interno di CrystalReport le mie immagini cambiano correttamente record per record (perciò il caricamento delle immagini al volo funziona!!) il problema c'è quando lancio lo stesso Report da VB.NET!!!
io credo si tratti di qualche DLL o cmq di qualche problema di configurazione di CR... ma non so dove sbattere la testa...
per ora mi sono inventato un modo alternativo di gestire queste stampe.. però se funzionasse, Cr sarebbe + comodo!
Giamp72

freeteo Profilo | Guru

Ciao,
se stai usando la versione XI dovrebbe andare bene anche dentro a visual studio, quello che mi fa pensare è che probabilmente stai usando la versione di Visual studio (che è una 10.x) invece della XI.

Questo perchè Visual Studio quando fai un report usa la sua versione, che è quella che trovi nella toolbox come viewer etc...quello che devi fare è referenziare la versione XI ed usare quella, per essere sicuro di usare quella versione.
Secondo me sta li il problema...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

YoungWorker Profilo | Newbie

Ciao, volevo solo darvi un informazione:qualche tempo fa ho avuto lo stesso problema con un mio collega (io creo i report e lui lavora in .net)...comunque il problema era dovuto al fatto che la cartella in cui erano contenute le immagini era in rete e in più aveva uno spazio nel percorso.Copiando l' immagine sul pc in cui gira l' applicazione abbiamo risolto il problema.Prova a controllare queste cose.
Spero di esserti stato d' aiuto.

Giamp72 Profilo | Junior Member

Io uso Crystal Report XI per fare i Report e distribuisco le dll della versione XI.. quindi il Cristal Report di Visual studio proprio non lo uso...
Giamp72

Giamp72 Profilo | Junior Member

per YoungWorker neppure la tua ipotesi trova conferma...
l'immagine da stampare è su un percorso locale, ed ha un nome corto...

Ribadisco: se guardo la preview del modulo, dentro all'applicazione CrystalReport XI, vedo tutte le mie stampe corrette!!!
è solo quando avvio la stampa dalla mia applicazione che l'immagine non viene incollata...

Non ne posso piuuuuuuu!!!
Giamp72

Giamp72 Profilo | Junior Member

Aggiungo un'altra informazione se vi può essere utile per aiutarmi...

faccio il modulo in CRXI, inserisco immagine, scelgo un'immagine a caso "C:\prova1.jpg", edito la proprietà Grapich Location e nella formula scrivo:
"c:\prova2.jpg"
Ora in editazione vedo corretamente l'immagine Prova1.jpg, ma se faccio preview viene valutata la formula e mi trovo caricata prova2.jpg.
tutto perfetto! Lancio la stampa da .NET vedo di nuovo sempre e solo la maledetta prova1.jpg.. in pratica sembra che graphic location, quando lancio
la stampa da .Net, non venga valutato...

Sto diventando scemo!




Giamp72

freeteo Profilo | Guru

Ciao,
ti richiedo per conferma, in .net nella tua applicazione che controllo di reportviewer usi? e che codice hai scritto per caricare il report?
Perchè se inconsciamente usi le librerie di visual studio che è una 10.x invece che quelle della versione XI che supporta la location, allora il problema rimane...

Ribadisco che il fatto che mi dici che dentro alla tua applicazione non va, mi fa pensare che tu involontariamente stia usando la versione 10.x di Vs...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

YoungWorker Profilo | Newbie

A supporto di quello che dice FreeTeo ricordo che il mio collega mi ha spiegato che le versioni di CR con cui io realizzo i report e con cui lui gestisce il software sono differenti; l' unico modo che abbiamo trovato per risolvere il problema di compatibilità fra le versioni è stato quello di passare direttamente l' immagine in binario come, ho visto, è già stato consigliato.Riflettici su e se non trovi altre soluzioni prova in questo modo.

Giamp72 Profilo | Junior Member

Dim stReport As New CrystalReports.Engine.ReportDocument
stReport.Load("c:\Test.rpt")
stReport.Refresh()
stReport.SetParameterValue("CP1", "c:\logo.jpg")
Cry.ReportSource = stReport
Cry.ShowFirstPage()


dove CRY è il CrystalReportViewer di VisualStudio...

Cazzo Cazzo Cazzo!!! guardo la versione e.... avete ragione voi.. 10.2.3600.0...
Ma avendo installato il CRXI pensavo che gli activex fossero allineati con la versione di CR...
a questo punto che devo fare?? come faccio ad usare CrystalReportViewer della versione XI???


Giamp72

freeteo Profilo | Guru

>C**o C**o C**o!!! guardo la versione e.... avete ragione voi..
>10.2.3600.0...
ti chiedo cortesemente di evitare esclamazioni di questo tipo



>Ma avendo installato il CRXI pensavo che gli activex fossero
>allineati con la versione di CR...
eh no, dipende a cosa fai riferimento, è per quello che insistevo su questo punto sul fatto che usando quello di Visual Studio usava la sua versione quindi la 10.x a meno che non glielo dici esplicitamente (quindi referenziando quello che vuoi)



>a questo punto che devo fare?? come faccio ad usare CrystalReportViewer
>della versione XI???
ti basta aggiungere come riferimento la versione XI, come ocx, adesso non so quali siano nel dettaglio, ma cmq lo trovi nella voce "COM component" quando fai tastoDX sulla toolbox->choose items.


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Giamp72 Profilo | Junior Member

ok.. scusa per l'esclamazione... ma sono giorni che combatto con sta cosa.....
ho provato a cercare i componeneti Com della release XI ma non li trovo..
probabilmente la versione che ho di Crystal Report XI non è quella giusta??!?!?! (credo che presto impazzirò!!)

qualcuno mi sa illuminare?

thanx a lot
Giamp72
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