以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]统计后台子表行数个数  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87412)

--  作者:nuhou
--  发布时间:2016/7/11 10:41:00
--  [求助]统计后台子表行数个数

我有个关联表,客户名称和生产计划,对应客户ID关联

 

现在窗口里面有个表 客户名称,我想打开的时候,让客户名称 表里的 有个计划数的列显示各个客户的计划数,但是我没有加载所有的数据,所以表达式列不太适用。

 

我现在是在窗口afteropen里面这样写的

For Each r As Row In Tables("客户名称").Rows
    r("计划数")=DataTables("生产计划").SQLCompute("count(*)", "[客户ID] = \'" & r("客户ID") & "\'")
Next

 

但是效率很低,打开这个窗口要好几秒,请教怎么修改比较合适,非常感谢


--  作者:大红袍
--  发布时间:2016/7/11 10:48:00
--  

DataTables("生产计划").LoadFilter = "客户id in (\'" & DataTables("客户名称").GetComboListString("客户id").replace("|", "\',\'") & "\'"
DataTables("生产计划").Load

For Each r As Row In Tables("客户名称").Rows
    r("计划数")=DataTables("生产计划").compute("count(客户id)")
Next

[此贴子已经被作者于2016/7/11 11:02:32编辑过]

--  作者:nuhou
--  发布时间:2016/7/11 11:01:00
--  
编译错误,应为语句结束
--  作者:大红袍
--  发布时间:2016/7/11 11:02:00
--  

DataTables("生产计划").LoadFilter = "客户id in (\'" & DataTables("客户名称").GetComboListString("客户id").replace("|", "\',\'") & "\'"
DataTables("生产计划").Load

For Each r As Row In Tables("客户名称").Rows
    r("计划数")=DataTables("生产计划").compute("count(客户id)")
Next


--  作者:nuhou
--  发布时间:2016/7/11 11:09:00
--  

最后应该是&"\')"吧

 

这样的话,所有客户后面的计划数都是一样的,全是总计划数了


--  作者:大红袍
--  发布时间:2016/7/11 11:13:00
--  

写错了。

 

DataTables("生产计划").LoadFilter = "客户id in (\'" & DataTables("客户名称").GetComboListString("客户id").replace("|", "\',\'") & "\'"
DataTables("生产计划").Load

For Each r As Row In Tables("客户名称").Rows
    r("计划数")=DataTables("生产计划").compute("count(客户id)", "[客户ID] = \'" & r("客户ID") & "\'")
Next