以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计查询窗口如何计算子表中合计数到父行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=66212)

--  作者:unverse
--  发布时间:2015/4/1 11:00:00
--  统计查询窗口如何计算子表中合计数到父行
有二个表,通过关联字段,做了关联,现在 在查询的时候想把子行的合计增加到父行中,查询窗口二个表是用的SQL查询默认加载为空,

我用SQLCOMPUTE可以将子行的合计数到父行,但速度太慢,请问有何方法可以提高一下查询速度呢?

请帮忙解决一下.谢谢.

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:desktop.rar



--  作者:Bin
--  发布时间:2015/4/1 11:04:00
--  
有关联的话用表达式统计啊http://www.foxtable.com/help/topics/0100.htm
--  作者:有点甜
--  发布时间:2015/4/1 11:18:00
--  

Tables(e.Form.Name & "_Table1").DataTable.LoadFilter= s
Tables(e.Form.Name & "_Table1").DataTable.load
Tables(e.Form.Name & "_Table1").DataTable.LoadChildren("zypj2")
Dim chr As Table
For Each r As Row In Tables(e.Form.Name & "_Table1").Rows
    r("金额")= DataTables("zypj2").Compute("sum(金额)","单据内码=\'" & r("单据内码") & "\'")
Next


--  作者:unverse
--  发布时间:2015/4/1 11:22:00
--  
SQLQUERY表也可以默认用系统建立的关联吗?,在后台表中没有表达式金额这列

\'Tables(e.Form.Name & "_Table1").DataTable.DataCols("金额").Expression = "Sum(Child.金额)"  这样出错.

--  作者:有点甜
--  发布时间:2015/4/1 11:23:00
--  

 看3楼,思路是:加载出要计算的数据,然后用compute啊,不要循环用sqlcompute

 


--  作者:unverse
--  发布时间:2015/4/1 11:40:00
--  
恩.解决 了,,,,看来SQLCOMPUTE不能频繁用,不然会卡死.还是加载到系统中来比较好,如果查询的量比较大全部 加载进去会 不会太卡,,,能不能用一个临时表将父表加载进来,然后增加一个临时列,将子表中的合计数赋值 到这列,点击某一行再加载子表?
--  作者:有点甜
--  发布时间:2015/4/1 11:42:00
--  

 你要统计每一行的子表的数据,你就必须把子表数据先加载出来,再统计,这样才快。

 

 既然子表已经要全部加载,那就一次性加载出来。