以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  以是否查找到记录作为条件判断  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=169546)

--  作者:ganlan
--  发布时间:2021/6/20 14:52:00
--  以是否查找到记录作为条件判断
If e.DataCol.Name = "销售订单号" Then 
      If e.NewValue Is Nothing Then 
         e.DataRow("主订单号") = e.DataRow("订单号")
Else
  Dim zw As DataRow 
       zw = DataTables("本表").Find("[订单号] = \'" & e.NewValue & "\'")(自身所在的这个表)
   If zw IsNot Nothing Then 
            e.DataRow("主订单号") = e.DataRow("销售订单号")

Else
    e.DataRow("主订单号") = e.DataRow("订单号")
End If
End If
End If

如果销售订单列空白,就等于本表的订单号,否则在订单号列找到,就等于这条记录所在的销售订单号,否则就等于订单号

--  作者:ganlan
--  发布时间:2021/6/20 16:44:00
--  
这个弄了,好卡,还会死机不知道哪里出错了
--  作者:2900819580
--  发布时间:2021/6/20 17:44:00
--  
测试没有问题,不会卡,
--  作者:有点蓝
--  发布时间:2021/6/20 20:59:00
--  
如果加载的数据多,重置列肯定会卡的。重置列会逐行重新计算一次。更改代码后可以重置一次,平时使用就不要老重置了
--  作者:ganlan
--  发布时间:2021/6/20 21:21:00
--  
一样的数据,但是别的列重置的时候就不会卡呀
--  作者:ganlan
--  发布时间:2021/6/20 21:25:00
--  
没设置之前,导入16000条数据可能就1-2分钟,设置了以后导入1分钟500条,导16000我需要等半小时,有更好的代码可以做到吗,想在主订单列写入,如果销售订单列空白,就等于本表的订单号,否则在订单号列找到,就等于这条记录所在的销售订单号,否则就等于订单号
--  作者:有点蓝
--  发布时间:2021/6/20 21:41:00
--  
导16000条数据,会触发这个事件16000次,使用find查询16000次,说会不会慢咯!

可以考虑导入后使用sql处理,

update {消息表} set 主订单号 = iif(销售订单号 is null,订单号,销售订单号) where 主订单号 is null

如果是指当前行的订单号,销售订单号,没有必要是find查询吧
If e.DataCol.Name = "销售订单号" Then
    If e.DataRow.isnull("销售订单号")  Then
        e.DataRow("主订单号") = e.DataRow("订单号")
    Else
        e.DataRow("主订单号") = e.DataRow("销售订单号")
    End If
End If



--  作者:ganlan
--  发布时间:2021/6/20 21:58:00
--  
不仅仅判断销售订单号是不是空白的,还要判断销售订单号,在订单号的列是否存在,如果存在就填销售订单号,如果不存在就填订单号
--  作者:有点蓝
--  发布时间:2021/6/20 22:15:00
--  
7楼用法就是
--  作者:ganlan
--  发布时间:2021/6/20 22:18:00
--  
哦,If e.DataRow.isnull("销售订单号")  Then这个语句是什么意思呀,不是说销售订单号如果是空值,则e.DataRow("主订单号") = e.DataRow("订单号")吗