以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  为什么e.cancel不起作用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61863)

--  作者:youngling
--  发布时间:2014/12/20 16:57:00
--  为什么e.cancel不起作用

在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
--  发布时间:2014/12/20 17:23:00
--  
DataColChanging 才有E.Cancel 的  Changed是已经改变了,无法取消了
--  作者:youngling
--  发布时间:2014/12/20 20:19:00
--  
是这样呀,知道了,我在改下,谢谢Bin大侠啦 。
--  作者:youngling
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间: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