Richiamare un report.rdl da pagina aspx oppure inglobare in essa il re...

venerdì 05 marzo 2010 - 10.20

sanzo77 Profilo | Newbie

Buongiorno a tutti,
Ho realizzato un report in reporting services che richiede un parametro per funzionare, vorrei presentare all'utente finale una pagina aspx con una combobox in cui elenco i valori possibili da passare al report. Alla pressione del tasto invia vorrei che o apparisse il report nella pagina stessa oppure vorrei essere reindirizzato alla pagina report nel reportserver con i parametri corretti.
Potete darmi una mano?
Grazie

freeteo Profilo | Guru

Ciao,
il report è ".RDL" (quindi con un ReportServer) o ce l'hai usando un file ".RDLC" (quindi un LocalReport) ?
In entrambi i casi puoi usare un codice di questo tipo per passare i dati e i parametri al report prima di visualizzarlo:
... List<ReportParameter> lista = new List<ReportParameter>(); LocalReport report = viewer.LocalReport; //--- li aggiungi via via lista.Add(new ReportParameter(... , ...)); .... if (viewer.ProcessingMode == ProcessingMode.Remote) viewer.ServerReport.SetParameters(lista); else report.SetParameters(lista); ....
dove la variabile "viewer" è il componente reportViewer che hai nella tua pagina...

Ciao.

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

sanzo77 Profilo | Newbie

Salve Freeteo ed innanzitutto grazie per la risposta.
Il report in questione è un file .rdl, quindi con un reportserver alle spalle. Ora proverò ad utilizzare i tuoi suggerimenti per visualizzarlo dentro una pagina aspx, anche se non ho capito in che punto passerò alla pagina l'indirizzo del report. La tua sintassi inoltre è in C#, giusto? Devo riuscire a tradurla in vb... purtroppo sono un programmatore occasionale su aspx, se hai altri consigli da darmi saranno enormemente bene accetti.
Grazie mille.

EDIT: ho implementato la soluzione suggeritami da freeteo nella seguente maniera:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
ora però quando tento di visualizzare il report ottengo un problema di autorizzazione: L'identità corrente (LOGISP\ASPNET) non dispone dell'accesso in scrittura a 'C:\Programmi\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\RSTempFiles\
Dove LOGISP è il server che ospita IIS e quindi il reporting services etc... sapete dirmi come fare ad autorizzare l'utenza aspnet?

freeteo Profilo | Guru

>Dove LOGISP è il server che ospita IIS e quindi il reporting
>services etc... sapete dirmi come fare ad autorizzare l'utenza
>aspnet?
ciao, prova a metterla proprio a livello di cartella di windows intanto, tasto dx->proprietà->protezione e gli metti che sia lettura/scrittura per quell'utente o per tutti gli utenti del computer.

Ciao.

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

sanzo77 Profilo | Newbie

Ciao di nuovo freeteo e di nuovo grazie.
Ho fatto come dici tu, in realtà l'ho fatto direttamente sulla dir incriminata e da subito ho notato le differenze, ovvero il messaggio di errore è cambiato.
Ora ottengo un
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Facendo una ricerca su google ho trovato un pò di indicazioni che mi hanno portato su questa pagina : http://msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.ireportservercredentials%28VS.80%29.aspx

Qui si parla di implementare una classe apposita per autenticarsi al reporting services. Io l'ho fatto quindi il codice della mia pagina aspx (la parte aspx.vb) è diventata la seguente
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Avendo ovviamente modificato il mio web.config con userid e pwd corrette.
Sto procedendo su una strada sbagliata oppure mi manca qualcosa?

Aggiungo che ho scritto una mini classe logger che mi ha permesso di capire che la parte riguardante le network credential la esegue... avete suggerimenti?
Grazie.

Edito nuovamente: non so come sono riuscito a farlo funzionare, ma ci sono riuscito. Ho scorporato le due classi: quella di presentation che interagisce con la pagina aspx e quella che esegue l'autenticazione tramite utente.
Ho riscritto il codice in maniera più ordinata e l'errore 401 è scomparso, ovviamente c'è qualcosa che ho cambiato inavvertitamente, ma veramente non riesco a capire cosa possa aver modificato.
La cosa buffa è che adesso funziona senza dover chiamare in causa l'autenticazione...
Posto il codice finale per completezza:
aspx.vb
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

cpa.francia Profilo | Newbie

Buongiorno,
anche io ho realizzato un report con reporting services ( il server su cui e' configurato e' in un dominio), ora sto integrando il report in un web server php non su dominio.
il mio problema e' il seguente: quando cerco di accedere alla pagina web (php) mi vengono chieste le credenziali domain\user password .

Qualcuno ha idea se posso passarle tramite codice php o tramite la stringa con cui richiamo il report all'interno della pagina php?

Grazie

Sergio
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5