以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于统计子表数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184438) |
-- 作者:zhuxinhui -- 发布时间:2022/12/7 14:40:00 -- 关于统计子表数据 1、Sum(Child(LF).结算金额),使用这个表达式求子表数据,只能统计已加载的数据,如果不加载子表明细统计结果就不准了 2、使用Tables("应付").Current("应付金额") = Round2(DataTables("已审采购").SQLCompute("Sum(结算金额)", "立帐编码 =\'" & s & "\'"), 2)方式求和,感觉又有点慢 有没有更好的统计子表明细数据的方式 |
-- 作者:有点蓝 -- 发布时间:2022/12/7 15:03:00 -- 如果数据没有完全加载的,只能是第2种方法,没有其它办法。 |
-- 作者:zhuxinhui -- 发布时间:2022/12/7 15:27:00 -- 如果在表的CurrentChanged事件加上这些代码
If e.Table.Current IsNot Nothing Then 在统计子表数据时应该不用使用SQLCOMPUTE,直接使用COMPUTE会快些 Tables("应付").Current("应付金额") = Round2(DataTables("已审采购").Compute("Sum(结算金额)", "立帐编码 =\'" & s & "\'"), 2)
或者在单据上统计子表数据也可以使用Compute,而不使使用SQLCOMPUTE吧
|
-- 作者:有点蓝 -- 发布时间:2022/12/7 15:33:00 -- 如果不是重置列,一边录入一边计算,使用sqlcompute也没有多大问题的。 另外上面的代码一样有缺陷,比如同编号明细加载了一部分,没加载完,Find肯定是有结果的。最好的方法是把同编号的数据全部移除掉,再追加 |
-- 作者:zhuxinhui -- 发布时间:2022/12/7 15:53:00 -- 这个需要怎样写移除呢, 我现在只是想在填 制单据时能够快、准、完整计算出子表数据 这几日在搞着数据速度的问题 |
-- 作者:有点蓝 -- 发布时间:2022/12/7 16:05:00 -- http://www.foxtable.com/webhelp/topics/2914.htm |
-- 作者:zhuxinhui -- 发布时间:2022/12/7 16:13:00 -- 使用DataTable的Load方法加载数据也是加载不全的?? 例如:根据单号加载数据也是加载不全,有办法可以加载得完全 Dim dt = e.Form.Controls("TextBox2").value |
-- 作者:有点蓝 -- 发布时间:2022/12/7 16:17:00 -- DataTables("已审销售").LoadFilter = "MB005 = \'" & dt & "\'" DataTables("已审销售").Loadtop = nothing
DataTables("已审销售").Load() |