Problema crystal report vb.net

giovedì 02 febbraio 2012 - 17.03

raf741804 Profilo | Newbie

Ciao a tutti ho un problema con Crystal Report
per meglio dire non lo avevo mai usato,
vorrei capire come si usa
cioè:
vorrei capire una volta creato il report e legato ad un form
quando lo richiamo non vedo i dati del report
quali sono i comandi per vedere i dati del report?
Io quando creo il report lo lego già al database con la procedura guidata.
Spero che riusciate ad aiutarmi.

Jeremy Profilo | Guru

Ciao
Devi passargli l'istanza del Dataset popolata di dati con l'istruzione
TuoReport.SetDataSource(IstanzaDataset)

Facci sapere...
Ciao

raf741804 Profilo | Newbie

cioè fammi capire io ho un database chiamato list ed una tabella listini
il mio report si chiama crystalreport1
devo fare così
crystalreport1.SetDataSource(listdataset.listini)?
non va

Jeremy Profilo | Guru

Dipende ..... il Dataset che hai usato per costruire il Report è strutturalmente uguale a listdataset.listini ..... o a listdataset
>non va
Ricevi qualche errore? Se si ... quale?
Hai provato con crystalreport1.SetDataSource(listdataset)?
Ricorda che la variabile listdataset deve essere un'istanza del Dataset che hai usato per costruire il report e deve contenere i dati che ti servono per popolare il Report.

Facci sapere...
Ciao

raf741804 Profilo | Newbie

i dati che mi servono sono in una tabella che si chiama listini che si trova nel database list

raf741804 Profilo | Newbie

ho provato ma mi da questo errore Errore 1 'listDataSet' è un tipo e non può essere utilizzato come espressione.

Jeremy Profilo | Guru

Ok ... e nel Report hai importato solo la DataTable Listini ..... o tutto il DataSet contenente la DataTable Listini?

Ti da errore perchè gli stai passando il tipo .... tu devi invece creare un'istanza.
Private Istanza as new listdataset ....... TuoReport.SetDataSource(Istanza)

raf741804 Profilo | Newbie

no ho visto in esperto database,
da Listdataset ho preso listini

Jeremy Profilo | Guru

Ok ... allora
Private Istanza as new listdataset ....... TuoReport.SetDataSource(Istanza.listini)

raf741804 Profilo | Newbie

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.CrystalReports.ViewerObjectModel
Public Class Form42
Private Sub Form42_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.MdiParent = Form1
End Sub
Private Istanza As New listDataSet
CrystalReport1.SetDataSource(Istanza.Listini)
End Class

dove sbaglio?

Jeremy Profilo | Guru

>Imports CrystalDecisions.CrystalReports.Engine
>Imports CrystalDecisions.CrystalReports.ViewerObjectModel
>Public Class Form42
>Private Sub Form42_Load(sender As System.Object, e As System.EventArgs)
>Handles MyBase.Load
> Me.MdiParent = Form1
> End Sub
> Private Istanza As New listDataSet
> CrystalReport1.SetDataSource(Istanza.Listini)
>End Class
>
>dove sbaglio?
Se non mi dici se e quale errore ricevi o comunque cosa accade, faccio fatica ad aiutarti.
Ad ogni modo non vedo l'assegnazione del report al reportviewer ... sarà quello?
TuoReportViewer.Report=CrystalReport1

raf741804 Profilo | Newbie

allora ti posto il codice
mports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.CrystalReports.ViewerObjectModel
Public Class Form42
Private Istanza As New listDataSet
Private Sub Form42_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.MdiParent = Form1
CrystalReport11.SetDataSource(Istanza)
CrystalReportViewer1.ReportSource = CrystalReport11
CrystalReportViewer1.Refresh()
End Sub
End Class

Fino a qui senza problemi ed errori,ma senza vedere i dati
mentre se ad istanza aggiungo listini mi da questo errore

Errore 1 Risoluzione dell'overload non riuscita perché nessun 'SetDataSource' accessibile è specifico per questi argomenti:
'Public Overridable Sub SetDataSource(dataTable As System.Data.DataTable)': Non specifico.
'Public Overridable Sub SetDataSource(enumerable As System.Collections.IEnumerable)': Non specifico.

Jeremy Profilo | Guru

Allora ... ho spulciato qualche vecchio progetto.
E' da molto tempo che non uso Crystalreport perchè preferisco altre tipologie di Reporting
Questo è il codice che ho usato in un mio vecchio progetto
Report = New ReportDocument Report.Load("Percorso del report\TuoReport.rpt") Report.SetDataSource(IstanzaDelDataSet) CrystaReportViewer.ReportSource = Report

L'errore che ricevi, significa che il metodo SetDataSource accetta, come parametro, un oggetto di tipo DataSet e non gli piace l'oggetto di tipo DataTable.
Pertanto devi passargli l'istanza del Dataset e non la DataTable Listini.
In questo modo sono quasi sicuro che tutto funzioni.

Facci sapere...
Ciao

raf741804 Profilo | Newbie

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Public Class Form42
Private Istanza As New listDataSet
Private Sub Form42_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.MdiParent = Form1
Dim Report = New ReportDocument
Report.Load("C:\Users\Lello\Desktop\software creati\Prog listmanager\listmanager\Anlistinitotale.rpt")
Report.SetDataSource(Istanza)
CrystalReportViewer1.ReportSource = Report
CrystalReportViewer1.Refresh()
End Sub
End Class


Lo vedo il report,ma non vedo i dati, puoi se ti va perfavore aiutarmi?

raf741804 Profilo | Newbie

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Public Class Form42
Private Istanza As New listDataSet
Private Sub Form42_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.MdiParent = Form1
Dim Report = New ReportDocument
Report.Load("C:\Users\Lello\Desktop\software creati\Prog listmanager\listmanager\Anlistinitotale.rpt")
Report.SetDataSource(Istanza)
CrystalReportViewer1.ReportSource = Report
CrystalReportViewer1.Refresh()
End Sub
End Class


Lo vedo il report,ma non vedo i dati, puoi se ti va perfavore aiutarmi?

Jeremy Profilo | Guru

>Imports CrystalDecisions.CrystalReports.Engine
>Imports CrystalDecisions.Shared
>
>Public Class Form42
> Private Istanza As New listDataSet
>Private Sub Form42_Load(sender As System.Object, e As System.EventArgs)
>Handles MyBase.Load
> Me.MdiParent = Form1
> Dim Report = New ReportDocument
>Report.Load("C:\Users\Lello\Desktop\software creati\Prog listmanager\listmanager\Anlistinitotale.rpt")
> Report.SetDataSource(Istanza)
> CrystalReportViewer1.ReportSource = Report
> CrystalReportViewer1.Refresh()
> End Sub
>End Class
>
>
>Lo vedo il report,ma non vedo i dati, puoi se ti va perfavore
>aiutarmi?
Prova a mettere un punto di interruzione sulla riga CrystalReportViewer1.Refresh() ed a lanciare l'applicazione in Debug.
Quando il compilatore si blocca sulla riga, porta il mouse sopra la scritta "Istanza" e clicca sulla lente che vedi nel popup che si apre.
Ci sono i dati? Sicuramente no.... ad ogni modo prova lo stesso.

Il Dataset che passi come DataSource del Report DEVE ESSERE POPOLATO DI DATI .... questo vuol dire che il DataSet deve prelevare i dati dal DataBase.
Ma questo è un'altro discorso......nel senso che, davo per scontato che la parte di mapping DataSet-DataBase fosse pronta.
Pertanto ti chiedo ..... Come hai ottenuto il DataSet listDataSet?? Con il Wizard di VisualStudio? O altrimenti hai istanziato e correttamente utilizzato i vari DataAdapter necessari a popolare le DataTable?


raf741804 Profilo | Newbie

ho utilizzato il wizard di visual studio ora provo quello che mi hai detto e ti faccio sapere

raf741804 Profilo | Newbie

non ci riesco ho bisogno se puoi di un piccolo esempio funzionante che io posso adattare a me
se ti è possibile farlo ti ringrazio anticipatamente.
Ti volevo dire che io il database lo lego facendo la creazione guidata report.
Non credevo fosse così difficile,io ho sempre disegnato io le stampe,ma stavolta
volevo provare ad usare Crystal report.
Se puoi farlo quando hai tempo fammi sapere
Grazie per la tua disponibilità

Jeremy Profilo | Guru

Ok ... quello che posso fare è un progettino di esempio con un database SqlServer contenente la tabella Listini ed un Dataset per farti capire come gestire la connessione verso un DataBase.
Non mi hai però detto se effettivamente il problema è l'assenza di dati all'interno del DataTable.
Ad ogni modo tieni presente che non userò il Wizard di VisualStudio perchè lo ritengo odioso e poco affidabile(a mio parere) e che non potrò costruire un CrystalReport perchè non ce l'ho installato e, se possibile, vorrei evitare di farlo.
Comunque ti assicuro che, visto il progettino di esempio, non avrai nessun problema a visualizzare il report.
Non ho moltissimo tempo a disposizione, comunque vedrò domani di inserirlo tra i vari impegni.
Ciao

raf741804 Profilo | Newbie

Il database all'interno è popolato all'interno,ma non riesco a capire perchè
il report non lo vede.

raf741804 Profilo | Newbie

grazie davvero per la disponibilità

Jeremy Profilo | Guru

Ciao.
Come promesso, anche se molto in ritardo, ti allego un piccolo progettino di esempio che dovrebbe farti capire come interagire con un Database popolando un Dataset all'interno della tua applicazione.
Nel tuo caso specifico, dovresti sostituire la riga
Ds=New Dataset
con
Ds= new TuoDatasetTipizzato
in modo da avere nel report un'istanza del dataset, usata per costruirne la struttura, popolato di dati.
Rimango comunque a disposizione per eventuali ulteriori chiarimenti.

Ciao
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