这是代码:
If ComboBox1.Text = "Total profil for all time" Then
Dim TA As New CPDBTableAdapters.TotalProfilForAllTimeTableAdapter
Dim TmpDS As New CPDB
TA.Fill(TmpDS.TotalProfilForAllTime)
'obriši prošli DS
RV.LocalReport.DataSources.Clear()
'dodaj novi DS
Dim RDS As New Microsoft.Reporting.WinForms.ReportDataSource("", TmpDS.TotalProfilForAllTime)
RV.LocalReport.DataSources.Add(RDS)
RV.LocalReport.ReportEmbeddedResource = "change_password.report1.rdlc"
RV.RefreshReport()
End If
问题出在这里:
Dim RDS As New Microsoft.Reporting.WinForms.ReportDataSource("",
TmpDS.TotalProfilForAllTime)
错误讯息: 重载决策失败,因为没有可访问的“新”对这些参数最具特异性。
答案 0 :(得分:0)
根据TmpDS.TotalProfilForAllTime的类型,强制转换传递给构造函数的第二个参数:
Dim RDS As New Microsoft.Reporting.WinForms.ReportDataSource("", CType(TmpDS.TotalProfilForAllTime, DataTable))
或:
Dim RDS As New Microsoft.Reporting.WinForms.ReportDataSource("", CType(TmpDS.TotalProfilForAllTime, IEnumerable))
等
VB无法明确选择最佳构造函数重载,因此必须为编译器提供一些帮助。请参阅此链接以了解可能的第二个参数类型。 http://msdn.microsoft.com/en-us/library/microsoft.reporting.winforms.reportdatasource.reportdatasource(v=vs.100).aspx 这是VB代码中的一个常见问题,因为VB对于解释对象类型并不是非常严格 - 它允许使用一种对象类型代替另一种对象类型的更多变化(特别是使用Option Strict Off)。