Foxtable(狐表)用户栏目专家坐堂 → 跨表统计如何满足两列条件


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

主题:跨表统计如何满足两列条件

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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
跨表统计如何满足两列条件  发帖心情 Post By:2019/8/20 5:54:00 [只看该作者]

老师好!以下代码是http://www.foxtable.com/webhelp/topics/1472.htm 跨表统计的自动更新示例。  是在统计表内自动更新订单表的数量和金额

但代码只是根据“产品”一列统计,如果要同时满足统计“产品”和“型号”两列(如以下示例统计表格),请问如何改代码? 我是小白,试着改了很多次没成功,请老师帮帮我,谢谢!

  产品   型号    数量  金额  
   A   m1      
   A   m2      
   B   m1      
   C   m2      


统计表的DataColChanged事件代码设置为:

If e.DataCol.Name = "产品" Then 
    Dim
 Filter As String = "[产品] = '" & e.NewValue & "'"
    e.
DataRow("数量") = DataTables("订单").Compute("Sum(数量)", Filter)
    e.
DataRow("金额") = DataTables("订单").Compute("Sum(金额)", Filter) 
End
 If


订单表的DataColChanged事件代码设置为:

Select Case e.DataCol.Name
    Case
 "数量","单价","折扣"
        
Dim pr As DataRow
        pr = 
DataTables("统计").Find("产品 = '" & e.DataRow("产品") & "'")
        If
 pr IsNot Nothing Then
            DataTables
("统计").DataCols("产品").RaiseDataColChanged(pr)
        End
 If
End
 Select


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


加好友 发短信
等级:狐神 帖子:4627 积分:33767 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/8/20 7:51:00 [只看该作者]

Select Case e.DataCol.Name
    Case
 "产品","型号"
        
Dim Filter As String = "[产品] = '" & e.NewValue & "' and [型号] = '" & e.DataRow("型号") & "'"
        e.
DataRow("数量") = DataTables("订单").Compute("Sum(数量)", Filter)
        e.
DataRow("金额") = DataTables("订单").Compute("Sum(金额)", Filter)
End
 Select
[此贴子已经被作者于2019/8/20 7:52:34编辑过]

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 9:06:00 [只看该作者]

Select Case e.DataCol.Name
    Case
 "产品","型号"
        
Dim Filter As String = "[产品] = '" & e.DataRow("产品") & "' and [型号] = '" & e.DataRow("型号") & "'"
        e.
DataRow("数量") = DataTables("订单").Compute("Sum(数量)", Filter)
        e.
DataRow("金额") = DataTables("订单").Compute("Sum(金额)", Filter)
End
 Select

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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
  发帖心情 Post By:2019/8/20 9:14:00 [只看该作者]

谢谢蓝老师! 根据第一段修改的代码测试了,可以计算统计但需要手动重置列才更新数据

原示例第二段代码是自动重置让自动更新数据的,请问这个怎么按照“产品”“型号”两列条件改?

订单表的DataColChanged事件代码设置为:

Select Case e.DataCol.Name
    Case
 "数量","单价","折扣"
        
Dim pr As DataRow
        pr = 
DataTables("统计").Find("产品 = '" & e.DataRow("产品") & "'")
        If
 pr IsNot Nothing Then
            DataTables
("统计").DataCols("产品").RaiseDataColChanged(pr)
        End
 If
End
 Select


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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 9:31:00 [只看该作者]

旧数据肯定都要重置一次列。

第二段代码不需要做任何更改

 回到顶部