URL Immagini per Reporting in Win Application

lunedì 30 giugno 2008 - 16.59

axlmito Profilo | Newbie

Ciao, scusate la domanda magari scontata ma sono un novellino nella programmazione ad oggetti...cmque il mio quesito è il seguente:
Io ho in oggetto tipo Immagine che voglio valorizzare con una foto presente in una deterinata path che mi creo come stringa a livello di load nel reportviewer ma come faccio a passare tale stringa all'oggetto nel report.
Ho visto che nelle proprietà dell'immagine sotto la voce "azione collegamento ipertestuale" c'è una voce "Passa a URL"...ho provato ad impostare un URL fisso ma niente immagine...
Grazie per l'aiuto.
P.S. Qualcuno conosce della documentazione, anche a pagamento, che descriva + o meno i metodi per creare report con reportviewer ?

freeteo Profilo | Guru

>Ho visto che nelle proprietà dell'immagine sotto la voce "azione
>collegamento ipertestuale" c'è una voce "Passa a URL"...ho provato
>ad impostare un URL fisso ma niente immagine...
>Grazie per l'aiuto.
hai già provato a vedere questo tip? :
http://www.dotnethell.it/tips/LinkReportingServices.aspx

come vedi viene impostato tutto l'url (quindi "http://www...."):

e se stai usando "RDLC" (ovvero con ReportViewer ma caricato come file "stand-alone" senza Report Server) all'oggetto report viene impostata la proprietà "EnableHyperlinks"
LocalReport report = this.reportViewer1.LocalReport; report.ReportPath = "rdlc\\ReportAgenda.rdlc"; report.EnableHyperlinks = true;

>P.S. Qualcuno conosce della documentazione, anche a pagamento,
>che descriva + o meno i metodi per creare report con reportviewer ?
ti lascio alcuni link che ti possono tornare utili per iniziare:
http://msdn.microsoft.com/it-it/library/ms251671(VS.80).aspx
http://www.gotreportviewer.com/


ciao.

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

axlmito Profilo | Newbie

Ciao,
inanzitutto ti ringrazio per la risposta e per l'attenzione però forse mi sono spiegato malissimo Io.
Cerco di illustrarti meglio lo scenario: La mia applicazione scriita in vb.net gira in locale e l'estensione del report è .rdlc.
sul designer io trascino un oggetto tipo immagine al quale vorrei passare come parametro la stringa del percorso locale della foto che devo caricare di volta in volta tipo c:\nomeapplicazione\immagini\cartellaxxx\foto.jpg . il percorso è dinamico in base a dei parametri di applicazione che costruisco a livello di load del reportviewer. come diavolo devo fare a dire all'oggetto immagine che il suo valore arriverà da una stringa che indica la posizione da parametro? Help me vi prego sono bloccato mi manca solo il report per consegnare l'applicazione...
Se non fosse possibile in questo modo potreste aiutarmi indicandomi una via ? ... Illuminate la mia buia strada ...grazie

freeteo Profilo | Guru

ciao,
puoi aggiungere un parametro al report (ad es: "url", dal menu Report->Report Parameters) , e poi da codice lo setti :
LocalReport report = this.reportViewer1.LocalReport; report.ReportPath = "rdlc\\mireport.rdlc"; report.EnableHyperlinks = true; List<ReportParameter> parametri = new List<ReportParameter>(); parametri.Add(new ReportParameter("url", "http://www....it")); report.SetParameters(parametri); this.reportViewer1.RefreshReport();

e quindi nell'url dell'immagine metti:
= Parameters!url.Value

Oppure se deve essere relativo ad un valore del campo, tipo all'interno di una tabella, allora puoi costruirlo cosi:
= "http://www....it/" & Fields!utente.Value

ovviamente sono esempi...

ciao.

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

axlmito Profilo | Newbie

Ciao,
grazie per la risposta... era una strada che avevo percorso anche io, quella dei parametri, ma pensavo fosse errata dato che quando inserisco la stringa del "=parameter!url.value" mi continua a dare il seguente errore nell'oggetto immagine dell'rdlc : Errore 1 L'espressione per Value per l'oggetto ‘image1’ di tipo image non è valida (è una stringa vuota). C:\Documents and Settings\Axl\Documenti\Visual Studio 2005\Projects\Cars.Net\Cars.Net\PrtScheda.rdlc Cars.Net
A questo punto sbaglio io ad inserire il .value... io lo metto nel campo espressione sotto l'etichetta visibilità delle proprietà dell'immagine...ma ho anche provato in tutte le altre posizioni ma sempre lo stesso errore...forse sbaglio a dichiarare il parametro? L'ho creato come tipo di dati string e ninete altro...non so + che pesci prendere...sono quasi tentato di abbandonare e riscrivere tutta l'applicazione in RPG e far comprare al cliente un bel AS400 greenscreen(cosi niente immagini solo dati)...

freeteo Profilo | Guru

>Ciao,
>grazie per la risposta... era una strada che avevo percorso anche
>io, quella dei parametri, ma pensavo fosse errata dato che quando
>inserisco la stringa del "=parameter!url.value" mi continua a
>dare il seguente errore nell'oggetto immagine dell'rdlc : Errore 1 L'espressione
>per Value per l'oggetto ‘image1’ di tipo image non è valida (è
>una stringa vuota). C:\Documents and Settings\Axl\Documenti\Visual
>Studio 2005\Projects\Cars.Net\Cars.Net\PrtScheda.rdlc Cars.Net
ma questo errrore è diverso dal fatto dell'url, riguarda il fatto che non è proprio impostata l'immagine da visualizzare, e non il link da navigare.
Come hai fatto l'immagine, è contenuta in un campo del db? E' nel formato corretto (byte[])?
Perchè forse devi fare un'altra cosa tu, ovvero caricare l'immagine dal disco...e non fare "un link" a qualcosa...
Se puoi allegare eventualmente il report posso cercare di capire come l'hai impostato.
Il problema dell'url che deve essere aperto quando un utente clicca sopra (che è quello di cui ti ho risposto prima) lo valutiamo in un secondo momento, questo errore di "Value" è diverso.

>A questo punto sbaglio io ad inserire il .value... io lo metto
>nel campo espressione sotto l'etichetta visibilità delle proprietà
visibilità? ma non devi fare che quando uno clicca sull'immagine si apri il browser su una pagina Web? Visibilità decidi se visualizzare o meno l'immagine, non ho capito forse devi fare qualcosa di diverso?

>dell'immagine...ma ho anche provato in tutte le altre posizioni
>ma sempre lo stesso errore...forse sbaglio a dichiarare il parametro?


>L'ho creato come tipo di dati string e ninete altro...non so
>+ che pesci prendere...sono quasi tentato di abbandonare e riscrivere
>tutta l'applicazione in RPG e far comprare al cliente un bel
>AS400 greenscreen(cosi niente immagini solo dati)...
ma no per questi problemi pensi ad una scelta così drastica? e poi cmq anche se scegliessi quella strada magari ti trovi dei problemi diversi anche percorrendo quella, se sei arrivato quasi alla fine perchè buttare via tutto il lavoro fatto finora? Poi è ovvio che devi valutare tu...

ciao.

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

axlmito Profilo | Newbie

Sei proprio un angelo a sopportarmi dato che non so affatto spiegarmi...il mio problema è proprio la visualizzazione dell'immagine e non il fatto che cliccandoci sopra succeda qulche cosa anche perchè il report è studiato propiro per la stampa cartacea...cmque provo ad essere il più chiaro possibile dopo di che non ruberò + il tuo prezioso tempo...ancora grazie e scusa l'imbranataggine...
Io devo creare una scheda auto con una foto della stessa che cambia in base alla targa (chiave univoca)che l'utente sta visualizzando.
I dati della sceda tecnica li ho nel db e quindi li passerò al report tramite un dataset dopo aver impostato la mia select ma la foto dell'auto la salvo nel disco locale in formato jpg in una cartella specifica che ha il nome della targa del veicolo es. Fiat punto AH500BJ la mia cartella sarà c:\nomeapplicazione\foto\AH500BJ\foto.jpg. Al momento del LOAD del prewiev io costruisco il percorso dell'immagine che deve apparire nel report e lo passo come parametro ma sul report l'oggetto immagine che trascino con il designer non capisco come dirgli che deve essere l'immagine che gli passo come percorso nei parametri o meglio l'immagine che voglio vedere nel report deve essere quella che gli dico nel parametro...sicuramente ti ho mandato in confusione parlando di URL...ti chiedo scusa ma non ho propriamente la padronanza del linguaggio io intendevo percorso fisico dove la foto è salvata sul disco...cmque tornando al designer quando trascino l'oggetto immagine non trovo nelle proprietà un posto dove dirgli l'immagine da visualizzare la trovi quì...spero di essere stato + chiaro in modo che tu possa aiutarmi...in realtà non ho intenzione di abbandonare anche perchè mi piace la programmazione visuale sono 10 anni che programmo in RPG e COBOL ed è arrivato il momento di svecchiarsi un po'...e poi il risultato fino ad ora mi sembra soddisfacente ed ho superato problemi ben maggiori il fatto che per questo tipo di report in giro non ci sono molti esempi e una documentazione appropriata se non persone disponibili come te a dare una mano.

freeteo Profilo | Guru

Nessun problema, siamo qui per questo!
Adesso ho capito cosa vuoi fare, avevo frainteso con le risposte che ti ho dato precedentemente.

Quello che devi fare tu, è impostare alcune proprietà dell'immagine:

Source=External
Value= ="file://c:\immagini\" + Fields!campo.Value + "foto.jpg" (o cmq la composizione di stringa corretta per il tuo path dell'immagine)
Sizing=AutoSize (o quello che va meglio per te)


A questo punto il report si arrangia a caricare l'immagine dal disco,basta solo che sia dentro ad un controllo che ripete, tipo una "Tabella", nella sezione delle "TableRows", in una colonna di questi, in modo che venga elaborata per ogni record.

Prova a vedere se riesci, altrimenti ti posto un progetto di esempio.

ciao.

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

axlmito Profilo | Newbie

ciao
è possibile che io abbia una versione ridotta di sql reporting...ti dico questo perchè assolutamente non ho nelle proprietà dell'immagine un posto dove caricare i valori che mi hai indicato...forse mi manca qualche pezzo di installazione...oppure io uso sql express e in questa versione non è posiibile usare le immagini come voglio fare io...

freeteo Profilo | Guru

No, non è possbile, se puoi creare i report con visual studio, hai sicuramente quelle proprietà perchè fanno parte del runtime.
Ma tu hai creato un report "RDLC" nella tua applicazione Win32? E dopo hai usato un codice tipo:

DataTable miaDataTable = new DataTable(); //--- riempi la tabella LocalReport miorpt = mioReportViewer.LocalReport; miorpt.ReportPath = @"c:\..\..\mioReport.rdlc"; miorpt.DataSources.Add(new ReportDataSource("tabella", miaDataTable)); mioReportViewer.RefreshReport();

giusto? oppure posta il tuo codice che cerco di capire...

ciao.

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

axlmito Profilo | Newbie

Io creo una form con all'interno il controllo reportviewer il quale mi chiede di associare un file rdlc nelle attività a quel punto non ho più bisogno di impostare la path del report a runtime ma lo faccio a livello di designer, in seguito il load della mia form è il seguente :
Public Class FrmPrtScheda

Private Sub FrmPrtScheda_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim percorso As String = ""
Dim percorsoi As String = ""

strSql = "SELECT * FROM numeratori WHERE id_colonna = 'NUM'"
cmd.CommandText = strSql
dr = cmd.ExecuteReader
If dr.HasRows = True Then
dr.Read()
percorso = dr("Percorso_foto") + "" & FrmAuto.targa.Text & "\"
End If
dr.Close()
'Foto
percorsoi = percorso + "Foto.jpg"

ReportViewer1.LocalReport.EnableExternalImages = True

'Creazione variabile dei parametri.
Dim Params As List(Of Microsoft.Reporting.WinForms.ReportParameter) = _
New List(Of Microsoft.Reporting.WinForms.ReportParameter)

'
'Lista Parametri da passare al report
Params.Add(New Microsoft.Reporting.WinForms.ReportParameter("url", percorsoi))
' Params.Add(New Microsoft.Reporting.WinForms.ReportParameter("parRepOrd", "COGNOME"))

'
'Passaggio dei parametri al Report.
ReportViewer1.LocalReport.SetParameters(Params)

Me.ReportViewer1.RefreshReport()

End Sub
End Class

Il report lo creo con la finestra di designer trascinando all'interno del corpo i miei oggetti dalla casella degli strumenti elementi del report.
Ho creato il parametro usando il menù report/parametri del report e poi trascino un'immagine nel corpo e da li in poi sono bloccato perche non riesco a puntare dalla form dove ho il reportviewer agli oggetti del report. mi spiego meglio: Se nel report la mia immagine si chiama Image1 dal load della form io non ho Reportviwer.localreport.image1.source = External oppure Reportviwer.localreport.image1.value = "file://c:\foto...." assolutamente non riesco a capire come associare i valori agli oggetti del report ...

freeteo Profilo | Guru

>Il report lo creo con la finestra di designer trascinando all'interno
>del corpo i miei oggetti dalla casella degli strumenti elementi
>del report.
ok

>Ho creato il parametro usando il menù report/parametri del report
>e poi trascino un'immagine nel corpo e da li in poi sono bloccato
>perche non riesco a puntare dalla form dove ho il reportviewer
>agli oggetti del report. mi spiego meglio: Se nel report la mia
>immagine si chiama Image1 dal load della form io non ho Reportviwer.localreport.image1.source
>= External oppure Reportviwer.localreport.image1.value = "file://c:\foto...."
>assolutamente non riesco a capire come associare i valori agli
>oggetti del report ...
no quelle sono proprietà che devi mettere mentre disegni il report:

1032x500 43Kb

e poi il codice che hai messo va bene...io nell'esempio costruivo la stringa dentro al report, tu vedo che giri da codice per costruire il path dell'immagine e lo metti in un campo della datatable, se fai così allora la formula da mettere nel "value" dell'immagine è solo: "file://" (importantissimo) + il nome del campo che hai.

ciao.

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

axlmito Profilo | Newbie

grande!!!!grande!!!!sei un genio mi hai salvato...finalmente funzionaaaaaaaaaaaa...
il problema era una cavolata non trovavo la finestra delle proprietà dove inserire i dati.
Continuavo a fare tasto destro sulle proprietà del designer e mi venivano fuori solo i parametri generale,visibilità,spostamento...
Postando l'immagine mi hai illuminato e ho cercato lo stesso menù.
Grazie!!!Grazie!!!Grazie!!!
Se sei di torino o ti trovi nelle vicinanze hai una pizza e birra pagate.

freeteo Profilo | Guru

ciao,
ti ringrazio sia per i complimenti che per la birra!
Se hai trovato aiuto accetta una risposta così chiudiamo il thread.

ps: togli la tua email dal post, o potresti incorrere in spam

ciao.

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

yuri85 Profilo | Junior Member

ciao.

riprendo questo post chiedendovi ... e se invece volessi caricare un file di testo? non mi pare che tra le proprietà della casella di testo si possa impostare source = external .

Devo quindi caricarmi il testo su una stringa e poi passarla al report?


grazie

freeteo Profilo | Guru

>Devo quindi caricarmi il testo su una stringa e poi passarla
>al report?
sì, se vuoi puoi usare i parametri.
Oppure puoi farlo caricare al report tramite codice (prorpietà del report, tab "code") dove puoi scrivere del codice vb.net puro per andare a prenderti il file di testo che vuoi, ma a quanto ricordo potresti avere problemi di permessi di accesso alla dir...la cosa più comoda è fare da codice .net e passare la stringa letta da codice.

Io ti consiglio di crearti una collection di un tuo oggetto, e riempirla da codice e poi passare quest'ultima al report come sorgente dati.

Ciao.

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

yuri85 Profilo | Junior Member

è proprio la strada che pensavo di percorrere.

grazie mille

freeteo Profilo | Guru

>è proprio la strada che pensavo di percorrere.
>grazie mille
di niente figurati siamo qui per questo.
Se dovessi avere problemi o domande su questa implementazione, magari sentiamoci su un nuovo thread.

Ciao.

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

totti240282 Profilo | Guru

Scusate se io nel report inserisco un oggetto image ,come faccio da codice a cambiargli il percorso tipo : ="file://C:\temp\a.jpg" ???
C'è solo un capitano !!!!!!

86Marco Profilo | Expert

Salve ragazzi.

Sto letteralmente impazzendo a caricare una immagine dentro il report. L'immagine da caricare si trova sul mio desktop.

Effettuo come da istruzioni che avete dato la seguente procedura:

517x147 21Kb



Appena però carico il report non mi viene visualizzato nulla... come è possibile??? :(

Vi prego aiutatemi!

grazie :)

freeteo Profilo | Guru

Ciao 86Marco,
non riaprire un thread così vecchio, anche se la cosa è similare, meglio se ne apri uno nuovo, e magari fai riferimento a questo di vecchio, così il forum rimane più pulito.

Ad ogni modo, forse il problema sono le barre a backslash "\" che devi portare a slash "/"?
Prova a metterle tutte, quindi una cosa tipo "file:///C:/.../.../..." etc

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
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