Se si utilizza il controllo di Microsoft che si chiama ReportViewer che consente di creare e visualizzare dei report, il problema più ricorrente è la visualizzazione di report diversi all'interno dello stesso controllo.
L'errore che si incontra è possono venire visualizzare per report diversi sempre il primo report visualizzato o restituisce un errore di mancanza di indice. Come risolvere il problema?
Per prima cosa è necessario pulire il report utilizzando il seguente comando (ReportViewer1 è il controllo che consente di visualizzare i report, ProvaBingingSource è il bindingsource collegato al report):
1: ' pulisce il report
2: Me.ReportViewer1.Reset()
La seconda cosa da fare è riassociare la base dati al report:
1: ' associa la base dati
2: Dim rptSource1 As New Microsoft.Reporting.WinForms.ReportDataSource
3: rptSource1.Name = "{nome base dati}"
4: rptSource1.Value = Me.ProvaBindingSource
5: Me.ReportViewer1.LocalReport.DataSources.Add(rptSource1)
Infine è possibile impostare il report che si vuole utilizzare (nell'esempio si utilizza un report presente nell'assembly):
1: 'imposta il report
2: Me.ReportViewer1.LocalReport.EnableExternalImages = True
3: Me.ReportViewer1.LocalReport.ReportEmbeddedResource = "Esia.Accounting.rptFatturato.rdlc"
4: Me.ReportViewer1.RefreshReport()
Facile no? :) Ah, non dimenticare di associare la base dati al report!