以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  e.Cancel = True. 这行怎么改成不添加行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86517)

--  作者:jinzhengbe
--  发布时间:2016/6/19 14:10:00
--  e.Cancel = True. 这行怎么改成不添加行
Dim dr As DataRow
    Dim Filter As String
    Filter = "[name] = \'" & e.DataRow("name") & "\' And [leiji] = \'" & e.DataRow("leiji") & "\'"
    dr = DataTables("minxi").Find(Filter ) \'在行政区域表查找所输入省市和县市的行
    If dr IsNot Nothing Then \'如果找到
        \'将找到行的区号?邮编内容填入到正在输入的行中.
        e.DataRow("cb") = dr("price")
        e.DataRow("pt") = dr("price1")
        e.DataRow("vip") = dr("vip")
        e.DataRow("vvip") = dr("vvip")
        e.DataRow("cvp") = dr("cvp")
        e.DataRow("used") =1
        e.DataRow("lirun")=e.DataRow("price")-e.DataRow("cb")   
        e.DataRow("yu")=dr("leiji") - e.DataRow("leiji")     
    Else If dr Is Nothing Then 
         e.Cancel = True
         msgbox("无法出库,库存不足")
       End If


e.Cancel = True. 这行怎么改成不添加行(如果满足dr is nothing时)
现在执行到这个位置后,会一直添加行。
然后一直提示库存不足

--  作者:狐狸爸爸
--  发布时间:2016/6/19 21:56:00
--  
你上面的代码,有增加行吗?
--  作者:大红袍
--  发布时间:2016/6/19 23:42:00
--  
 代码你写到什么事件?增加行的代码写到哪里了啊?
--  作者:jinzhengbe
--  发布时间:2016/6/20 9:48:00
--  
有的啊。
增加一行,提示一次没有库存
事件是datarowadded
[此贴子已经被作者于2016/6/20 9:51:34编辑过]

--  作者:大红袍
--  发布时间:2016/6/20 9:58:00
--  

写到 DataRowAdding事件。

 


--  作者:jinzhengbe
--  发布时间:2016/6/20 19:55:00
--  
重新看了一下 应该是下面这段代码的问题
问题出在 weixin窗口的,+号按钮, 输入数量后 如果没有库存就会一直提示 没有库存

下面的代码是在weixin表的datacolchanged


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:mifeng2.foxdb


If e.DataCol.name = "shuliang" Then
    If e.DataRow("shuliang") Then
        Dim t As Table = Tables("weixindanhao.weixin.weixinminxi")
        For i As Integer = t.rows.count-1 To 0 Step -1
            t.rows(i).delete
        Next
        Dim cc As Integer =e.DataRow("shuliang")
        Dim r As Row = Tables("weixinminxi").Current
        Dim r1 As Row = Tables("minxi").Current
        Dim rks1 As Double = DataTables("minxi").sqlCompute("max(leiji)", "name = \'" & r1("name") & "\'")
        Dim cks As Double = DataTables("weixinminxi").sqlCompute("max(leiji)", "name = \'" & r("name") & "\'")


想在这个部分比较 minxi表name的最大 leiji值   是否大于weixinminxi表相同name 的最大lieji值
如果 满足下面

 
        If rks1 - cks >=0  Then
        t.addnew(cc)
        t.save()
Else
    If rks1 -cks <0  Then
e.Cancel = True
       msgbox("无法出库,库存不足")
    End If
End If
End If
End If
[此贴子已经被作者于2016/6/20 19:57:43编辑过]

--  作者:大红袍
--  发布时间:2016/6/20 20:35:00
--  
If e.DataCol.name = "shuliang" Then
    Dim t As Table = Tables("weixindanhao.weixin.weixinminxi")
    Dim cc As Integer = e.DataRow("shuliang")
    Dim rks1 As Double = DataTables("minxi").sqlCompute("max(leiji)", "name = \'" & e.DataRow("name") & "\'")
    Dim cks As Double = DataTables("weixinminxi").sqlCompute("max(leiji)", "name = \'" & e.DataRow("name") & "\'")
   
    If rks1 - cks >=0  Then
        For i As Integer = t.rows.count-1 To 0 Step -1
            t.rows(i).delete
        Next
        t.addnew(cc)
        t.save()
    Else
        e.Cancel = True
        msgbox("无法出库,库存不足")
    End If
End If

--  作者:jinzhengbe
--  发布时间:2016/6/20 20:44:00
--  
可以了
非常感谢
1!!!!!
[此贴子已经被作者于2016/6/20 21:04:04编辑过]

--  作者:大红袍
--  发布时间:2016/6/20 21:04:00
--  

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:mifeng2.foxdb


--  作者:jinzhengbe
--  发布时间:2016/6/20 21:09:00
--  
 不好意思啊
重新测试了一下

发现,如果修改数量的话, 代码测试成功

如果第一次输入数量的话
还是一直提示(没有库存) 直到 添加的数量 行结束为止,加入添加了10行, 就会提示10次,(没有库存的情况下)