以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  beforeadddatarow  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=183668)

--  作者:edisontsui
--  发布时间:2022/11/12 8:03:00
--  beforeadddatarow
Dim dr As DataRow 
dr = DataTables("出入库单总表").SQLFind("录入员 = \'" & User.name & "\' and 出入库单号 is null")
If dr IsNot Nothing Then 
    e.Cancel = True
    MessageBox.Show("你已经有一个数据行尚未输入<出入库单号>!")
End If

上面是一段放在 beforeadddatarow 里面的代码,目的是不让一个用户增加2个空白数据行,但是执行时没有效果。请问是什么原因呢?谢谢。

--  作者:有点蓝
--  发布时间:2022/11/12 9:08:00
--  
可能数据没有保存,查2次

Dim dr As DataRow 
dr = DataTables("出入库单总表").SQLFind("录入员 = \'" & User.name & "\' and 出入库单号 is null")
If dr is Nothing Then 
    dr = DataTables("出入库单总表").Find("录入员 = \'" & User.name & "\' and 出入库单号 is null")
End If
If dr IsNot Nothing Then 
    e.Cancel = True
    MessageBox.Show("你已经有一个数据行尚未输入<出入库单号>!")
End If
[此贴子已经被作者于2022/11/12 10:16:00编辑过]

--  作者:edisontsui
--  发布时间:2022/11/12 10:06:00
--  
1、现在只是增加一行,都还没有再增加一行,就出现警告了,等于是不允许我增加新行了。
2、为什么要查询2次呢?

--  作者:有点蓝
--  发布时间:2022/11/12 10:25:00
--  
Dim dr As DataRow 
dr = DataTables("出入库单总表").Find("录入员 = \'" & User.name & "\' and 出入库单号 is null")
If dr is Nothing Then 
    dr = DataTables("出入库单总表").SQLFind("录入员 = \'" & User.name & "\' and 出入库单号 is null")
End If
If dr IsNot Nothing Then 
    e.Cancel = True
    MessageBox.Show("你已经有一个数据行尚未输入<出入库单号>!")
End If

--  作者:edisontsui
--  发布时间:2022/11/12 13:02:00
--  
这个可以了。谢谢。