以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  重复次数  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188908)

--  作者:ganlan
--  发布时间:2023/10/30 11:07:00
--  重复次数
想统计比如订单明细中,订单号在订单号列出现次数,也即是这个订单号出现多少行产品。
用以下代码,有点卡,5000多的起码要几十秒,想请教一下有没有其他快速点的方法,谢谢
If e.DataCol.Name = "订单号" Then 
e.DataRow("行数") = DataTables("表A").Compute("Count(订单号)", "[订单号] = \'" & e.NewValue & "\'")
End If

--  作者:有点蓝
--  发布时间:2023/10/30 11:10:00
--  
已经是最快的了,如果重置列5000多行都要算上一次,肯定费时的。平时订单号发送变化的时候,直接更新这个订单号的数据,就不用这么费时了
--  作者:ganlan
--  发布时间:2023/10/30 11:12:00
--  
哦,因为看到用excel的countif函数,很快可以,以为这个可以也那么快
--  作者:有点蓝
--  发布时间:2023/10/30 11:16:00
--  
如果是重置列,可能还触发了其它的代码
--  作者:ganlan
--  发布时间:2023/10/30 14:58:00
--  
恩,我发现如果是A表在A表列查找就会很卡,但是如果去其他表,只要不是本表,就很快,应该是在本表触发新建的可能数据源不确定数据,所以就卡,如果是其他表,数据源数据确定所以很快
--  作者:有点蓝
--  发布时间:2023/10/30 15:07:00
--  
A表的事件代码都发上来看看
--  作者:ganlan
--  发布时间:2023/10/30 18:05:00
--  
不管是什么,涉及到统计的,比如求和,求个数,都是只要是同一个表的都卡,但是复制一个一样的表做B表,跨表去统计,就会很快
If e.DataCol.Name = "订单号" Then 
e.DataRow("行数") = DataTables("表A").Compute("Count(订单号)", "[订单号] = \'" & e.NewValue & "\'")
End If

--  作者:有点蓝
--  发布时间:2023/10/30 20:04:00
--  
请上传实例测试