以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 【已解决】DataColChanged表事件导致系统自动退出的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32470) |
-- 作者:atmetmicoo -- 发布时间:2013/5/2 20:59:00 -- 【已解决】DataColChanged表事件导致系统自动退出的问题 狐爸, 今天发现一个严重的问题,不知道是不是Bug,特做了一个新实例发上来,问题如下: 请打开项目,当发货明细数量大于订单的数量时候,会运行下面①处代码,然后系统就自动关闭掉了,急需请狐爸帮忙,谢谢。 这是发货明细的DataColChanged事件代码: Dim num1,num2 As Double Select Case e.DataCol.Name Case "发货数量" If e.NewValue <= 0 Then e.DataRow("发货数量") = e.OldValue Return End If Dim dr As DataRow = DataTables("订单明细").Find("ID = \'" & e.DataRow("ID") &"\'") If dr IsNot Nothing Then num1 = dr("已发货") - e.OldValue +e.NewValue num2 = dr("未发货") + e.OldValue If num1 > dr("订单数量") Then \' ①运行此处代码时系统立即自动关闭 e.DataRow("发货数量") = num2 MessageBox.Show("发货数量不得大于订单数量") Return End If If num1 < 0 Then \' ②运行此处代码时系统立即自动关闭 e.DataRow("发货数量") = num2 MessageBox.Show("总发货数量不得小于0") Return End If dr("已发货") = num1 End If End Select [此贴子已经被作者于2013-5-3 9:55:12编辑过]
|
-- 作者:atmetmicoo -- 发布时间:2013/5/2 22:57:00 -- 沙发,顶一下 |
-- 作者:atmetmicoo -- 发布时间:2013/5/3 8:46:00 -- 再顶一下,除掉上面的①跟②处,其他时候也经常会导致系统自动退出。 |
-- 作者:狐狸爸爸 -- 发布时间:2013/5/3 8:52:00 -- 我建议你这种验证代码设置在DataColchanging事件中,发现不符合要求,直接e.cancel,取消本次输入即可,不要去设置该列的值,否则你很容易造成死循环,导致系统崩溃退出。 Datacolchanging用于验证,DataColchanged用于在输入完成后计算或其他动作。 |
-- 作者:atmetmicoo -- 发布时间:2013/5/3 8:54:00 -- 以下是引用muhua在2013-5-3 8:49:00的发言: 我测试木有问题,你下载狐表最新版本 4.30 版吧。 muhua老师,我的是4月30日的最新版本,我这每次试都会自动退出,可否方便远程帮忙看看? |
-- 作者:atmetmicoo -- 发布时间:2013/5/3 9:55:00 -- 以下是引用狐狸爸爸在2013-5-3 8:52:00的发言: 我建议你这种验证代码设置在DataColchanging事件中,发现不符合要求,直接e.cancel,取消本次输入即可,不要去设置该列的值,否则你很容易造成死循环,导致系统崩溃退出。 Datacolchanging用于验证,DataColchanged用于在输入完成后计算或其他动作。 谢谢狐爸,是我对狐表的理解还不够,现在可以了。 |