以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 以是否查找到记录作为条件判断 (http://foxtable.net/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("订单号")吗 |