Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Crystal Reports e reportistica
Articolo "Utilizzare il Web Service dei SQL Reporting Services da una ...
lunedì 13 dicembre 2004 - 12.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 13 dic 2004 - 12:53
Salve a tutti!
Ho cercato di eseguire l'esercizio dell'articolo che ho citato nel titolo, ma non riesco comunque ad accedere al report che ho creato perchè non riesco ad impostare un path corretto sulla locazione del report (il report si trova su un report server remoto). Sapete aiutarmi o darmi uqalche altro suggerimento per accedere ad un report remoto via pagina ASP.NET?
Grazie a tutti....
Roberto
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 13 dic 2004 - 14:36
Ti ringrazio, ma questa operazione l'avevo già fatta, e credo che funzioni anche.
Il vero problema è quando l'esempio descrive il metodo "Render".
In questo metodo si fa rifermento al path assoluto in cui si trova il report da richiamare, ma poichè il report si trova sul server, ed al server accedo solo tramite una directory "virtuale" (quella di http://NomeServer/ReportServer/), che path devo dare al metodo Render? Spero di essere stato più esplicito, e scusate la mia inesperienza con Reporting Services e ASP.NET!
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 13 dic 2004 - 15:46
Ora forse mi è più chiaro...
Sono riuscito a linkarmi al report, ma non è così semplice come si descrive!
Bisogna inserire un path del tipo: "/Users Folders/NomeServer Administrator/My Reports/NomeReport"
Non è però così intuitivo come l'esempio vorrebbe far credere...
Ora riesco ad accedere al report, ma mi da un altro errore relativo ai parametri del report.
Cercherò di smanettarci un pò su! Grazie comunque per la disponibilità.
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
mer 15 dic 2004 - 14:54
Sempre in relazione a questo articolo, Ho eseguito le linee guida fino al Listato n°3 e mi permette di visualizzare i report in tutti i formati, eccetto l'html.
Gli esempi del listato 4 li ho eseguiti e riesco a visualizzare le pagine, ma il Listato 5 (che dovrebbe permettermi di visualizzzare le immagini) non è ben spiegato: quali parti di codice devo inserire nel "Page_Load" e quali nel codice? Le spiagazioni sono poco chiare...
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 11:17
Ora ho un'altro problema:
ho modificato lo script rendendolo parametrico, così da poter dare da input il formato in cui voglio visualizzare il report. Quando richiedo il pdf non ho problemi; per tutti gli altri formati, invece, mi compare DUE VOLTE la maschera di windows che mi richiede se voglio aprire, salvare, annullare, ecc. e non capisco il motivo. Qualcuno può aiutarmi?
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 11:56
Qua i problemi non finiscono mai!
Ora dice che quando carico una pagina in formato html il parametro SessionID non è definito...
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 11:58
No: volevo dire: StreamID. Ancora non riesco a visualizzare un'immagina nel report...
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 12:31
Forse ho risolto parzialmente il problema della doppia richiesta "Open, Save, ecc..."
Ad eccezione del formato pdf, tutti gli altri formati richiedono la definizione:
Response.ContentType = "application/vnd.ms-excel"
(nel caso di excell e formato csv.)
quale dovrebbe essere la dicitura corretta per tutti gli altri formati diusponibili?
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 12:44
Ora inserisco il codice.
Prima spiego meglio: ho creato una semplice pagina ASP.NET con un pulsante che avvia il tutto.
Text Boxes ricevono il nome del file e l'estensione.
Ecco la parte del codice modificata rispetto alla parte generata dall'autocomposizione:
using...
using WebApplicationProva2.ReportingServices1;
namespace WebApplicationProva2
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.DropDownList DropDownList2;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
string path = Request.FilePath;
string devInfo = "<DeviceInfo><Toolbar>false </Toolbar><StreamRoot>"+path+"?SessionID={SessionId}
&StreamId=</StreamRoot></DeviceInfo>";
string devImgInfo = "<DeviceInfo><OutputFormat>JPEG</OutputFormat></DeviceInfo>";
}
private void Button1_Click(object sender, System.EventArgs e)
{
//parametri prelevati da input
string username = "XYZ";
string accesspwd = "JKL";
string nameReport = DropDownList1.SelectedItem.Text;
string filetype = DropDownList2.SelectedItem.Text;
string exten = DropDownList2.SelectedItem.Value;
//parametri ausiliari
int resultato = exten.CompareTo("html");
//imposto il path del report (incluso il report)
string absolutereportPath = "...";
string reportPath = absolutereportPath + nameReport;
//Creo la classi Proxy
ReportingService rs = new ReportingService();
//Imposto le credenziali: imposto username è password
rs.Credentials = new System.Net.NetworkCredential(username,accesspwd);
//Imposto a null le DataSourceCredentials
DataSourceCredentials[] dsc = null;
//Imposto i parametri
ParameterValue[] parameters = new ParameterValue [1];
parameters[0] = new ParameterValue();
parameters[0].Name = "Nome";
parameters[0].Value = TextBox1.Text;
//Imposto la devInfo
string devInfo
= "<DeviceInfo><HTMLFragment>false</HTMLFragment><Toolbar>false /Toolbar></DeviceInfo>";
string devImgInfo = "<DeviceInfo><OutputFormat>JPEG</OutputFormat></DeviceInfo>";
//Imposto i parametri di output
ParameterValue[] pv;
Warning[] w;
string outEnconding;
string outMime;
string[] streamIDs = null;
byte[] result = rs.Render(reportPath, filetype, null, devInfo, parameters, dsc, null, out outEnconding,
out outMime, out pv, out w, out streamIDs);
//caso html:
if (resultato == 0)
{
//definisco la session per il report
rs.SessionHeaderValue = new SessionHeader();
rs.SessionHeaderValue.SessionId = Request.QueryString["SessionId"];
rs.SessionHeaderValue.IsNewExecution = false ;
byte[] buffer = rs.RenderStream(reportPath, "HTML4.0", Request.QueryString["StreamId"], null,
devImgInfo, parameters, out outEnconding, out outMime);
//infine scrivo sullo stream della pagina
Response.Clear();
Response.ContentType = "image/jpeg";
Response.Write(new System.Text.UTF7Encoding().GetString(result).Replace("{SessionId}",
rs.SessionHeaderValue.SessionId));
}
else
{
//cancello gli Headers e i Content Types
Response.ClearContent();
Response.ClearHeaders();
if (exten.CompareTo("pdf") == 0)
Response.AppendHeader("content-disposition",string.Format("Attachment; filename={0}.
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 13:17
E poi, come faccio ad avere aiuto su come scegliere i "ContentType"?
Perchè le guide all'utilizzo sono così ostili?
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
lun 20 dic 2004 - 16:59
Non per essere scortese, ma prove ne ho fatta tante, e solo dopo averle fatte ho chiesto informazioni...
Il problema è che non riconosce il parametro StreamID anche se "inserisco tutto nel page_load"
patmdg
Profilo
| Newbie
2
messaggi | Data Invio:
mar 21 dic 2004 - 09:59
ciao io sono nuovo del forum e nuovo per quanto riguarda l'utilizzo di sql reporting service.
ho installato SQL Developer il sp3a e SQL REp SERV ma con Visual Studio .NET non riesco a vedere nessun bottone, nela barra degli strumenti, che faccia riferimento a sql report service.
qualcuno puo darmi dei suggerimenti al fine di poter usare sql reporting service in un progetto per creare dei report.
grazie
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
mar 21 dic 2004 - 10:52
L'essore lo da quando provo a scrivere nel SessionID, anche perchè è l'unica volta in cui mi occorre lo StreaID.
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
mar 21 dic 2004 - 11:01
L'eerora la fa quando cerco di scrivere il "byte[] buffer".
patmdg
Profilo
| Newbie
2
messaggi | Data Invio:
mar 21 dic 2004 - 14:35
grazie coach
hofinito
Profilo
| Newbie
20
messaggi | Data Invio:
mar 4 gen 2005 - 16:17
Forse dopo tanto tempo sono riuscito a risolvere il mio problema: cambiando il tipo di immagine del report (anzichè definirla "Embended" è meglio archiviarla in "Web" e richiamarla opportunamente.
Ora però c'è un'altro problema: quando richiamo un report con un'immagine (dopo essermi già autenticato da form, e avendo archiviato già le credenziali del report) il Report Server mi chiede nuovamente UserID e Password. Sapete come fare ad evitare questo?
DAVES
Profilo
| Newbie
24
messaggi | Data Invio:
gio 13 lug 2006 - 12:33
Ciao Marco,
ho eseguito il codice che hai riportato nell'articolo in C# ed non ho avuto problemi ad esportare in pdf i report che avevo distribuito sul report server. Se invece richiamo la stessa funzione render da un'applicazione visual basic ho problemi con il passaggio dei parametri al report:
inserisco il codice -->>
Dim rs As New RDI.ReportingServices.ReportingService
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim dsc() As RDI.ReportingServices.DataSourceCredentials
Dim hi, sht As String
Dim Parameters(4) As RDI.ReportingServices.ParameterValue
Parameters(0) = New RDI.ReportingServices.ParameterValue
Parameters(0).Name = "cli"
Parameters(0).Value = "4"
Parameters(1) = New RDI.ReportingServices.ParameterValue
Parameters(1).Name = "anno"
Parameters(1).Value = "2006"
Parameters(2) = New RDI.ReportingServices.ParameterValue
Parameters(2).Name = "inizio"
Parameters(2).Value = "6"
Parameters(3) = New RDI.ReportingServices.ParameterValue
Parameters(3).Name = "fine"
Parameters(3).Value = "7"
Dim reportPath As String = "/RDI/Dettaglio_Lavori"
'imposto i parametri di output
Dim pv() As RDI.ReportingServices.ParameterValue
Dim w() As RDI.ReportingServices.Warning
Dim outEnconding, outMime As String
Dim streamIDs() As String
Dim result() As Byte = rs.Render(reportPath, "PDF", hi, "<DeviceInfo><HTMLFragment>false</HTMLFragment><Toolbar>false</Toolbar></DeviceInfo>", Parameters, dsc, sht, outEnconding, outMime, pv, w, streamIDs)
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
'Infine scriviamo l'arraydi byte, ripuliamo lo stream e chiudiamo
Response.BinaryWrite(result)
Response.Flush()
Response.End()
Ho il seguente errore : Dove Sbaglio??'?
Errore server nell'applicazione '/RDI'.
--------------------------------------------------------------------------------
System.Web.Services.Protocols.SoapException: Il valore del parametro "Parameters" non è valido. Per informazioni sui valori validi, vedere la documentazione. ---> Microsoft.ReportingServices.Diagnostics.Utilities.InvalidParameterException: Il valore del parametro "Parameters" non è valido. Per informazioni sui valori validi, vedere la documentazione. at Microsoft.ReportingServices.WebServer.ReportingService.CheckParameterArray(ParameterValueOrFieldReference[] parameters, String parameterName) at Microsoft.ReportingServices.WebServer.ReportingService.Render(String Report, String Format, String HistoryID, String DeviceInfo, ParameterValue[] Parameters, DataSourceCredentials[] Credentials, String ShowHideToggle, Byte[]& Result, String& Encoding, String& MimeType, ParameterValue[]& ParametersUsed, Warning[]& Warnings, String[]& StreamIds) --- Fine dell'analisi dello stack dell'eccezione interna --- at Microsoft.ReportingServices.WebServer.ReportingService.Render(String Report, String Format, String HistoryID, String DeviceInfo, ParameterValue[] Parameters, DataSourceCredentials[] Credentials, String ShowHideToggle, Byte[]& Result, String& Encoding, String& MimeType, ParameterValue[]& ParametersUsed, Warning[]& Warnings, String[]& StreamIds)
Inoltre ti volevo chiedere se esiste un manuale su reporting services con riferimenti anche alle applicazioni ASP.NET
Grazie
Saluti
Davide Amato
Torna su
Stanze Forum
Elenco Threads
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 !