重载解决方案失败,因为没有可访问的新版本'这些论点最具体

时间:2014-10-07 20:22:33

标签: vb.net

这是代码:

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)

错误讯息: 重载决策失败,因为没有可访问的“新”对这些参数最具特异性。

1 个答案:

答案 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)。