当我在调试模式下启动我的应用程序以试图找到为什么我没有返回任何数据时,我设置了一个永远不会达到的断点。我在加载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表单。没有例外,没有任何例外。我在大学读过一个同学之前就已经看过这样的事情了,真的不记得他的问题了。其他人有什么想法吗?
答案 0 :(得分:1)
如果是答案。
最后使用try catch。它可能会抛出你没有捕获的错误。