当我在调试模式下启动我的应用程序以尝试找出为什么没有返回任何数据时,我设置了一个永远无法到达的断点。我在加载 ReportViewer 时调用此代码。为了进行测试,我给它的 ID 为 9 以返回一个通用的数据列表......
performanceReportDataList = PerformanceReportData.GetPerformanceReportDataByMilestoneID(9)
rptViewer.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("dsPerformanceReportData", performanceReportDataList))
第二行代码永远不会被命中。应用程序跳过该方法中的其余代码,只加载完全空白的 ReportViewer。现在有一些幕后代码通过几层发生,因为第一行被调用来填充通用列表。我传递 ID,创建命令对象并将 ID 作为参数提供给它,然后调用存储过程。在数据库上运行相同的东西可以很好地返回数据,但这是我的代码停止的地方......
Public Shared Function GetDataTableUsingReader(ByVal sql As String, Optional ByVal parameterList As List(Of DataParameter) = Nothing, Optional ByVal type As CmdType = CmdType.StoredProcedure) As DataTable
Dim cmd As OleDbCommand = CreateCommand(sql, parameterList, type)
Dim dt As New DataTable
Using cmd.Connection
cmd.Connection.Open()
dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection)) ' Last Line Hit
End Using
Return dt
End Function
以上是我的 DAL 中的一个方法。它转到 dt.Load() ,然后没有遇到任何其他代码行,它直接跳回应用程序并加载没有数据的 ReportViewer 表单。没有例外,没有什么。以前上大学的时候和同学见过这样的事情,但是真的不记得他的问题是什么了。其他人有什么想法吗?