我在Form Load事件中有一些代码。它做得很好。但是当它从数据库中选择数据时,之后就没有命令执行。没有任何错误,但它只是沉默。
我按如下方式测试了它:
MsgBox("1")
vrStudentName = DsGetPprStatusfromEnrSummary.tblPaperEnrSummary.Rows(0).Item("StudentName")
MsgBox("2")
请指教。 谢谢 Furqan
消息框1显示数据但不显示消息框2。实际上,第二个消息框语句根本没有显示任何响应。
答案 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”下的每个复选框。按确定。 现在,当您通过调试器运行应用程序时,即使您有一个活动的处理程序,它也会因任何异常而中断。这可以帮助您追踪问题。
问题已解决