以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 在订单表头上面统计整月订单的收款状态 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194339) |
-- 作者:ganlan -- 发布时间:2024/11/30 12:28:00 -- 在订单表头上面统计整月订单的收款状态 请教一下想在订单表头上面统计该客户的整月账单订单的收款状态,用了下面的代码,重置列的时候,需要的时间要好几分钟,帮忙看一下代码能不能改良一下,谢谢 说明:订单表中字段有:订单号,账单收款状态,订单金额,订单已收款,客户名,账单月份 收款表中字段有:订单号,订单金额,订单已收款,客户名,账单月份 Select Case e.DataCol.name Case "订单号" If e.DataRow.IsNull("订单号") Then e.DataRow("账单收款状态") = Nothing Else Dim filter As String filter = "[客户名] = \'" & e.DataRow("客户名") & "\' and 账单月份 = \'" & e.DataRow("账单月份") & "\'" Dim ddje As Integer = DataTables("收款表").Compute("sum(订单金额)", filter) Dim ddys As Integer = DataTables("收款表").Compute("sum(订单已收款)", filter) If ddje = ddys Then e.DataTable.replacefor("账单收款状态", "收完", filter) Else e.DataTable.replacefor("账单收款状态", "未收完", filter) End If End If End Select
[此贴子已经被作者于2024/11/30 12:30:09编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/11/30 12:51:00 -- 考虑实时更新,比如:http://www.foxtable.com/webhelp/topics/1472.htm 而不是动不动就重置列。一般是更改代码后重置一下旧数据。如果说数据比较多,慢是正常的,这种没有什么可优化的了
|
-- 作者:ganlan -- 发布时间:2024/11/30 13:28:00 -- 因为我是辅助SQL数据库的,所以做不到实时更新呀。几千条数据,要差不多十分钟,这个和其他的求和速度差太多了,其他的几乎马上就好了 [此贴子已经被作者于2024/11/30 13:29:04编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/11/30 13:49:00 -- 意思是"收款表"是其它程序往数据库里写的,不是自己的程序录入的? 使用的是Compute,那么数据应该已经加载了,几千条数据也不应该要十分钟这么久,估计是"账单收款状态"更新后又触发了其它事件代码。方便做个例子发上来看看
|
-- 作者:ganlan -- 发布时间:2024/11/30 14:18:00 -- 不是,我两个表都是引用外部数据源的数据,然后通过重置列后再填入外部数据源的,收款表其实也是销售订单表,只不过我引用了两次同一个外部数据源的同一个表,起了不一的名字而已,估计这样而是等同一个表吧。之前试过,如果是同一个表内的数据参与重置,就会特别慢,如果是引用不同表的就很快,我以为添加同一个表进来,可以相当于不同表了,看看还是不行。 |
-- 作者:有点蓝 -- 发布时间:2024/11/30 16:13:00 -- 上实例吧 |