Foxtable(狐表)用户栏目专家坐堂 → 关于统计子表数据


  共有7225人关注过本帖树形打印复制链接

主题:关于统计子表数据

帅哥哟,离线,有人找我吗?
zhuxinhui
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1980 积分:6207 威望:0 精华:0 注册:2017/11/8 17:37:00
关于统计子表数据  发帖心情 Post By:2022/12/7 14:40:00 [只看该作者]

1、Sum(Child(LF).结算金额),使用这个表达式求子表数据,只能统计已加载的数据,如果不加载子表明细统计结果就不准了

2、使用Tables("应付").Current("应付金额") = Round2(DataTables("已审采购").SQLCompute("Sum(结算金额)", "立帐编码 ='" & s & "'"), 2)方式求和,感觉又有点慢

有没有更好的统计子表明细数据的方式


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/7 15:03:00 [只看该作者]

如果数据没有完全加载的,只能是第2种方法,没有其它办法。

 回到顶部
帅哥哟,离线,有人找我吗?
zhuxinhui
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1980 积分:6207 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2022/12/7 15:27:00 [只看该作者]

如果在表的CurrentChanged事件加上这些代码

 

If e.Table.Current IsNot Nothing Then
Dim ym As String = e.Table.Current("立帐编码")
    Dim Filter As String = "MB005='" & ym & "'"
    If DataTables("已审销售").Find(Filter) Is Nothing Then '如果对应的订单明细没有加载过
        DataTables("已审销售").AppendLoad(Filter) '则追载此订单的订单明细
    End If
End If

在统计子表数据时应该不用使用SQLCOMPUTE,直接使用COMPUTE会快些

Tables("应付").Current("应付金额") = Round2(DataTables("已审采购").Compute("Sum(结算金额)", "立帐编码 ='" & s & "'"), 2)

 

或者在单据上统计子表数据也可以使用Compute,而不使使用SQLCOMPUTE吧

 


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/7 15:33:00 [只看该作者]

如果不是重置列,一边录入一边计算,使用sqlcompute也没有多大问题的。

另外上面的代码一样有缺陷,比如同编号明细加载了一部分,没加载完,Find肯定是有结果的。最好的方法是把同编号的数据全部移除掉,再追加

 回到顶部
帅哥哟,离线,有人找我吗?
zhuxinhui
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1980 积分:6207 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2022/12/7 15:53:00 [只看该作者]

这个需要怎样写移除呢,

我现在只是想在填 制单据时能够快、准、完整计算出子表数据

这几日在搞着数据速度的问题


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/7 16:05:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
zhuxinhui
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1980 积分:6207 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2022/12/7 16:13:00 [只看该作者]

使用DataTable的Load方法加载数据也是加载不全的??

例如:根据单号加载数据也是加载不全,有办法可以加载得完全

Dim dt = e.Form.Controls("TextBox2").value
DataTables("已审销售").LoadFilter = "MB005 = '" & dt & "'"
DataTables("已审销售").Load()


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/7 16:17:00 [只看该作者]

DataTables("已审销售").LoadFilter = "MB005 = '" & dt & "'"
DataTables("已审销售").Loadtop = nothing
DataTables("已审销售").Load()

 回到顶部