View Full Version : [VB.NET - VS2008] Creare report da Data Table
Ciao a tutti,
nel mio programma ho una form con una datagridview (tre colonne) e tre textbox. Dopo aver riempito le TB premo un pulsante e i dati di ogni TB vengono caricati in una nuova riga (rispettivamente in una diversa colonna) della datagridview.
Ho creato un'altra form con un ReportViewer ed una property di tipo datatable: alla pressione di un secondo pulsante sulla prima form, la datasource della DGW viene caricata all'interno della property e la stessa viene impostata come datasource del report associato al reportviewer.
Funziona tutto, se non fosse che il report è bianco: è possibile a runtime (o ancora meglio con un autocomposizione) creare una tabella in un report prendendo struttura e dati da una datatable?
Ho creato un'altra form con un ReportViewer ed una property di tipo datatable: alla pressione di un secondo pulsante sulla prima form, la datasource della DGW viene caricata all'interno della property e la stessa viene impostata come datasource del report associato al reportviewer.
Sarebbe utile ( per non dire strettamente necessario ) che tu mostrassi qui il codice esatto che usi per questa operazione.
Questa è la routine associata alla pressione del bottone nel primo Form:
Dim FormReport As New FormReportStdCartone
FormReport.dt = DataGridView1.DataSource
FormReport .Show()
Questo il codice del Form contenente il report viewer:
Public Class FormReportStdCartone
Dim tabella As DataTable
Public Property dt() As DataTable
Get
Return tabella
End Get
Set(ByVal value As DataTable)
tabella = value
End Set
End Property
Private Sub FormReportStdCartone_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
ReportViewer1.LocalReport.ReportPath = "***\forms\reportSTDCartone.rdlc"
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("Tabella_Standard", tabella))
ReportViewer1.DocumentMapCollapsed = True
ReportViewer1.RefreshReport()
End Sub
End Class
Il problema è che il report "reportSTDCartone.rdlc" è completamente vuoto e non so come riempirlo: ovviamente nelle sorgenti dati non compare la mia tabella, visto che viene creata a Runtime.
Il primo problema che vedo è proprio il DataTable.
Se il DGV viene compilato senza connessione ad una base dati il suo DataSource è un oggetto vuoto, in ogni caso.
Perciò in quel caso stai passando un DataTable vuoto.
Puoi verificarlo semplicemente, subito dopo il codice che popola il DGV stesso :
If DGV.DataSource Is Nothing Then
MsgBox("DataSource vuoto")
End If
Se, come penso, è Nothing, allora dovrai costruirti una Function, o comunque una routine per convertire il contenuto della DGV in un DataTable, perchè non esiste un Metodo dedicato a questo scopo... ;)
Il primo problema che vedo è proprio il DataTable.
Se il DGV viene compilato senza connessione ad una base dati il suo DataSource è un oggetto vuoto, in ogni caso.
Perciò in quel caso stai passando un DataTable vuoto.
Puoi verificarlo semplicemente, subito dopo il codice che popola il DGV stesso :
If DGV.DataSource Is Nothing Then
MsgBox("DataSource vuoto")
End If
Se, come penso, è Nothing, allora dovrai costruirti una Function, o comunque una routine per convertire il contenuto della DGV in un DataTable, perchè non esiste un Metodo dedicato a questo scopo... ;)
Ho provato anche a passare una datatable creata ad hoc ma non sono riuscito a concludere...
Sull'area bianca del ReportViewer dovrebbe uscire comunque un messaggio che da qualche info sul motivo del mancato caricamento, se non sbaglio.
Personalmente ho usato il ReportViewer parecchio tempo fa, una volta, perchè ricordo che non mi entusiasmò per niente... :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.