在语句之后不执行的命令

时间:2011-04-26 10:50:06

标签: vb.net

我在Form Load事件中有一些代码。它做得很好。但是当它从数据库中选择数据时,之后就没有命令执行。没有任何错误,但它只是沉默。

我按如下方式测试了它:

MsgBox("1")
vrStudentName = DsGetPprStatusfromEnrSummary.tblPaperEnrSummary.Rows(0).Item("StudentName")
MsgBox("2")

请指教。 谢谢 Furqan

消息框1显示数据但不显示消息框2。实际上,第二个消息框语句根本没有显示任何响应。

3 个答案:

答案 0 :(得分:1)

这是64位操作系统上的一个令人讨厌的问题。在没有诊断的情况下吞下从表单的Load事件运行的代码中引发的任何异常。这是一个尚未解决的老问题,因为微软的DevDiv和Windows团队互相指责。我的手指指向Windows组,但这也无济于事。

解决此问题的两种基本方法:

  • 项目+属性,编译选项卡,向下滚动,高级编译选项,将目标CPU选项从x86更改为AnyCPU。这会禁用吞噬异常的Wow64仿真层。

  • Debug + Exceptions,勾选“Common Language Runtime Exceptions”的“Thrown”框。一旦抛出异常,调试器就会停止。

另请注意,很少需要使用OnLoad方法或Load事件。只有需要表单的大小或位置或句柄准确的代码才需要它。其他任何东西都属于表单的构造函数。经常使用的是一个VB6时代错误,它在设计器设计中延续,使得Load事件成为Form的默认事件。键入“Sub New”添加构造函数。

答案 1 :(得分:0)

嗯,似乎很明显,对DsGetPprStatusfromEnrSummary.tblPaperEnrSummary的调用永远不会回来;这意味着问题出在某处。

那么是什么呢?我猜这是一个DataSet,是吗?

但是你已经静态地引用了它,这是YuckyPooPoo(TM)恕我直言,因为它是一个复杂的神器,你已经渲染了所有引用它不可分离的东西,因此从根本上说是不可测试的!

答案 2 :(得分:0)

收到Codeproject的答案

在出现的对话框中,勾选“Thrown”和“Unhandled”下的每个复选框。按确定。 现在,当您通过调试器运行应用程序时,即使您有一个活动的处理程序,它也会因任何异常而中断。这可以帮助您追踪问题。

问题已解决