[vb.net] Reportviewer associare istanza origine dati da codice

domenica 18 aprile 2010 - 20.38

cleaner Profilo | Newbie

ciao a tutti;) avrei una domanda da porvi:

ho importato un report funzionante (file rdlc), nella mia windows application basata quindi sui form.
Dopodichè ho aggiunto correttamente il controllo reportviewer e associato il mio report;
ora mi servirebbe poter riempire da codice l' istanza origine dati, forse capirete meglio con una img->
http://yfrog.com/j2immagineacp
io da codice ho fatto una cosa del genere:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ma non si vede niente nel report.. mentre se eseguo il wizard alla fine mi crea tutto lui e si vede, ma non ho capito niente del procedimento che fa sotto e quindi non mi serve.
grazie.

up^^

freeteo Profilo | Guru

Ciao,
non ho capito bene se tu il report lo disegni correttamente, aggiungendo una datasource in fase di design e poi passandogli i dati da codice (attento che il nome del datasource deve essere uguale) oppure non hai nemmeno disegnato il report nel designer.

Cmq puoi guardare anche questi link intanto:
http://www.gotreportviewer.com/ dove ci sono parecchi esempi da cui prendere spunto...


Ciao.

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

cleaner Profilo | Newbie

grazie innanzitutto della risposta!
il report l'ho già disegnato tramite: File->Nuovo progetto->Progetto server di report. ed è funzionante avviandolo singolarmente
il punto è che mi crea un file .rdl !! Io devo poterlo eseguire in locale e leggendo su internet ho visto che l'estensione del report deve essere .rdlc!
cosichè tramite una guida su msdn l'ho convertito e importato nel mio progetto basato sui windows form.

Ora il problema è che non riesco a farlo funzionare internamente all'applicazione; ho letto che devo passargli il datasource tramite codice, ma tramite il code postato non funziona..

In una situazione standard ho letto che dovrebbe essere possibile tramite l'aggiunta del controllo reportviewer poter disegnare il report direttamente all'interno del progetto basato sui windows form, invece al premere della label 'Progetta nuovo report' non succede niente(Posseggo: sql server express with advanced server e visual studio 2008 professional)

freeteo Profilo | Guru

>Ora il problema è che non riesco a farlo funzionare internamente
>all'applicazione; ho letto che devo passargli il datasource tramite
>codice, ma tramite il code postato non funziona..
presumo tu abbia seguito questa guida:
http://msdn.microsoft.com/en-us/library/ms252109(VS.80).aspx
prova a verificare (magari in debug) se il nome della datasource corrisponde, ed ha la struttura uguale a quella con cui hai costruito il report.



>form, invece al premere della label 'Progetta nuovo report' non
>succede niente(Posseggo: sql server express with advanced server
>e visual studio 2008 professional)
si dev'essere sporcato qualcosa prova a reinstallare i pacchetti Sql Express Advanced Services...casomai puoi anche provare ad usare il Visual STudio Web Developer Express, che ha il supporto per il designer report e poi riportarlo dentro alla tua applicazione successivamente...

Ciao.

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

cleaner Profilo | Newbie

cavolo..non me ne va bene una.. anche con il visual web developer express non vedo nemmeno il controllo, scaricando l'addons http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=b67b9445-c206-4ff7-8716-a8129370fa1d
qualsiasi lingua che scelgo mi dice che non è compatibile..
qualche idea?

@edit:

OK!! ho formattato e ripristinato, ora mi ritrovo con:

- sql server 2008 r2 with advanced service express
- visual studio 2008 professional
- visual web developer express.

e riesco a creare i report in formato .rdlc! però avrei ancora un dubbio.. la mia applicazione basata sui windows form dovrà collocarsi su diversi pc, che quindi avranno si la stessa struttura di db, ma il nome dell'istanza potrebbe variare, per cui mi chiedo:

come cambio l'origine dati del report senza passare dal wizard?
grazie!

freeteo Profilo | Guru

Ciao,
devi passargli la sorgente dati tu, quindi ti connetterai via codice al database usando le classi standard di .net, e poi quando hai la collection (o la DataTable) popolata, gliela passi con un codice di questo tipo:
LocalReport miorpt = ReportViewer1.LocalReport; miorpt.ReportPath = @"c:\..\..\TuoReport.rdlc"; miorpt.DataSources.Add(new ReportDataSource("tabella", #dati#));
Chiaramente "#dati#" sono quelli che hai letto da .net


Tecnicamente la connessione che hai usato a design-time per il report di fatto ti serve solo per costruirlo, poi a runtime ha sempre bisogno che qualcuno gli passi i dati...
ps: attento ad usare lo stesso nome della DataSource che hai usato a design...

Per altre info, puoi guardare qui:
http://www.gotreportviewer.com

Ciao.

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

cleaner Profilo | Newbie

ciao!
stavo provando ad assegnare il datasource al report da codice, come mi ha fatto vedere..ma ho qualche problema; uso vb.net:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

questa chiamata " RpDataSet.crea_dtset" mi crea dataset, ed ho verificato che viene creato correttamente in quanto gli faccio riempire con il contenuto una datagrid e funziona senza problemi.. ma qualsiasi cosa metta nel secondo parametro passato a New Microsoft.Reporting.WinForms.ReportDataSource mi restituisce 'indice non compreso nell'intervallo'..
qualche idea?
al primo parametro ho passato lo stesso nome del origine dati, è corretto?(http://yfrog.com/1asourcejp)
ti ringrazio!

freeteo Profilo | Guru

>ma qualsiasi cosa metta nel secondo parametro passato a New Microsoft.Reporting.WinForms.ReportDataSource
>mi restituisce 'indice non compreso nell'intervallo'..
>qualche idea?
mah, non mi è mai capitato questo errore sinceramente...puoi postare un esempio di programma con dati e un report fittizi, che ti dia l'errore?
In modo che possa sistemartelo io...


>al primo parametro ho passato lo stesso nome del origine dati,
>è corretto?(http://yfrog.com/1asourcejp)
si questo è sicuramente corretto


Ciao.

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

cleaner Profilo | Newbie

ok, ci siamo quasi..ho risolto quel problema, sai cos'era? alla classe
ReportDataSource devo passargli qualcosa che sia IEnumerable e non
un singolo item..per cui ho fatto così se può essere utile a qualcuno:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ora non va più in errore..tuttavia c'è qualcosa che non va ancora.. da questa immagine[http://yfrog.com/jd55875638p] sembra che il primo parametro gli venga passato giusto, il nome è uguale..ma quando eseguo il report mi dice --> non è stata fornita un istanza dell'origine dei dati per l'origine dei dati 'RpDataSet_QR_RPTOMESI'.. eppure il controllo si chiama ReportViewer1..cosa potrebbe essere?
grazie mille!!

yuhuu!! ci sono riuscito..facevo un erroraccio a mio parere; definivo un nuovo controllo reportviewer e su quest'ultimo lavoravo..ma a cosa mi serviva se di fatto l'avevo già creato nel mio form?? ecco la soluzione a chiunque servisse:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
grazie ancora dell'aiuto e buon weekend!
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5