Dataset, datatable e Crystal Report

mercoledì 29 ottobre 2008 - 11.10

hidden Profilo | Newbie

Salve ragazzi ho un piccolo problema che vorrei esporvi.
Ho un programma che effettua delle operazioni su determinati dati alla fine delle operazioni mi restituisce una datatable che desidero stampare con crystal report utilizzando il CrystalReportViewer. Perciò creo all'interno del mio progetto un dataset non tipizzato con una datatable identica alla datatable restituitami dal mio programma.
Dopo aver creato il mio dataset con la datatable creo il mio crystal report impostando come origine dati il dataset del mio progetto poi dispongo tutti i campi e i gruppi all'interno del mio report e salvo.

Una volta ottenuta la datatable dal programma la carico all'interno della datatable (vuota) del mio dataset con il seguente comando

DataSet.DatatableMio.Load(DataTableRestituitadalProgramma.CreateDataReader())
DataSet.AcceptChanges()

Ed il tutto funziona correttamente infatti la DataTable (datatablemio) è impostata come origine dati di una datagridview e dopo le operazioni precedentemente descritte la Datagridview si popola.

Però fatto strano e che il report risulta sempre vuoto come se fosse sempre connesso al dataset con la datatable non popolata.
ho provato anche ad usare
MioReport..VerifyDatabase()
MioReport..Refresh()

ma niente i dati non vengono mostrati all'interno del report.

Come mai? Dove sto sbagliando?
Il dataset con la datatable che è impostata come origini dati del report è la stessa impostata come origini dati della datagirdview. Perchè la datagridview si popola ed il report no?

Ho mancato percaso qualche riga di comando?
Sto impazzendo perchè il tutto (dal mio punto di vista) sembra essere corretto ma non funziona.
Vi ringrazio anticipatamente per il vostro aiuto e disponibilità

Grazie

freeteo Profilo | Guru

Ciao,
il comando "MioReport..VerifyDatabase()" serve per controllare la struttura dei dati che legge dall'origine, rispetto a quelli che hai nel report, ad esempio infatti se avevi quando l'hai disegnato un campo stringa, e adesso è un intero, si risincronizza.
Perciò nel tuo caso non c'entra.

Prova a postare tutto il codice del "load" del report->settaggio di dati-> visualizzazione, così riusciamo a capire meglio dove potrebbe insidiarsi il problema.

Il codice che ti consiglio io cmq è questo:
Dim tabella as new DataTable() ...riempi i dati nella tabella... Dim mioreport as new ReportDocument() mioreport.Load("c:\...\mioreport.rpt") mioreport.SetDataSource (tabella) CrystalReportViewer1.ReportSource = mioreport
Eventualemente se ti può essere d'aiuto guarda anche questo articolo, dove c'è anche un esempio da scaricare:
http://www.dotnethell.it/articles/Crystal-Reports-Integration-Windows-Form.aspx
li vengono mostrati anche altre tipologie di "associazioni dati" al report, ossia Logoinfo o datasetTipizzati, ma trovi anche quello tuo, ossia il con il metodo "SetDataSource".

ciao.

Matteo Raumer
[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