Foxtable(狐表)用户栏目专家坐堂 → 为什么e.cancel不起作用


  共有2730人关注过本帖树形打印复制链接

主题:为什么e.cancel不起作用

美女呀,离线,留言给我吧!
youngling
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
为什么e.cancel不起作用  发帖心情 Post By:2014/12/20 16:57:00 [只看该作者]

在DataColChanged 事件里放了以下代码,希望起到的作用是如果出货数量大于库存数量就取消编辑, 但是我的代码不起作用呀,请高手看下问题在哪里.

 

未交货数量=订货数量-累计出货数量

库存数量来源于成品库存表,累计出货数量和订货数量来源于订单明细表。

 

If e.DataCol.Name = "交货数量" Then
            Dim filters As String
            Dim drs As DataRow = e.DataRow
            Dim prs As DataRow
            filters = " 客户订单号 = '" & drs("客户订单号") & "' And 客户产品号 = '" & drs("客户产品号") & "' And 订单行号 = '" & drs("订单行号") & "'"
            prs = DataTables("订单明细表").Find(filters) '在订单明细表中筛选出符合要求的数据
            drs("订货数量") = prs("订货数量")   '取得该产品的订货数量
           
            If e.DataRow("未交货数量")  < 0 Then
                msgbox("出货数量大于订单数量,请注意核实")
            End If
           
            If e.DataRow("库存数量")  < 0 Then
                msgbox("出货数量大于库存数量,请修改出库数量或先完成入库操作")
            e.cancel=True
            Return
            End If
       
    End If
End If

 

现在如果输入的出货数量导致库存数小于0,会提示 “出货数量大于库存数量,请修改出库数量或先完成入库操作”,但是不会取消编辑,也可以保存,这个如何改下可以不允许保存并且取消编辑不允许输入 会导致库存数小于0的出货数呢?

[此贴子已经被作者于2014-12-20 16:57:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/12/20 17:23:00 [只看该作者]

DataColChanging 才有E.Cancel 的  Changed是已经改变了,无法取消了

 回到顶部
美女呀,离线,留言给我吧!
youngling
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2014/12/20 20:19:00 [只看该作者]

是这样呀,知道了,我在改下,谢谢Bin大侠啦 。

 回到顶部
美女呀,离线,留言给我吧!
youngling
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2014/12/20 20:28:00 [只看该作者]

bin 大侠

 

我把下列语句放到 DataColChanging里,可是一样没效果呢,什么原因呢:

 

If e.DataRow("库存数量")  < 0 Then
    msgbox("出货数量大于库存数量,请修改出库数量或先完成入库操作")
    e.cancel=True
End If

 

一样会提示  “出货数量大于库存数量,请修改出库数量或先完成入库操作”,但是不会取消操作呀?

为什么呀?

 

比如库存数是50,出货数量填入60,会报错 “出货数量大于库存数量,请修改出库数量或先完成入库操作”,但是不会取消操作,但如果我要继续修改数量,想把出货数由60改成40,就会提示“出货数量大于库存数量,请修改出库数量或先完成入库操作”,然后就会拒绝修改了。

[此贴子已经被作者于2014-12-20 20:31:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/21 9:56:00 [只看该作者]

If e.DataCol.Name = "交货数量" Then
   
    If e.DataRow("未交货数量")  < 0 Then
        msgbox("出货数量大于订单数量,请注意核实")
        Return
    End If
   
    If e.DataRow("库存数量")  < 0 Then
        msgbox("出货数量大于库存数量,请修改出库数量或先完成入库操作")
        e.cancel=True
        Return
    End If

    Dim filters As String
    Dim drs As DataRow = e.DataRow
    Dim prs As DataRow
    filters = " 客户订单号 = '" & drs("客户订单号") & "' And 客户产品号 = '" & drs("客户产品号") & "' And 订单行号 = '" & drs("订单行号") & "'"
    prs = DataTables("订单明细表").Find(filters) '在订单明细表中筛选出符合要求的数据
    drs("订货数量") = prs("订货数量")   '取得该产品的订货数量
   
End If


 回到顶部