Foxtable(狐表)用户栏目专家坐堂 → [求助]有条件求和


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

主题:[求助]有条件求和

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


加好友 发短信
等级:二尾狐 帖子:526 积分:5083 威望:0 精华:0 注册:2015/4/15 15:25:00
[求助]有条件求和  发帖心情 Post By:2016/3/19 22:22:00 [只看该作者]

关联表,希望子表某列相同时,只计算一次数值

例子:

使用DataColChanged事件:
If e.DataCol.Name = "第一列" Then 
    e.DataRow("总数量") = DataTables("子").Compute("Sum(数量)","[第一列] = '" & e.NewValue & "'")
End If

结果:1+1+3+3+4+1 = 13;

图片点击可在新窗口打开查看此主题相关图片如下:23.jpg
图片点击可在新窗口打开查看

希望:
当 [第二列] 值相同时,其数量只计算1次,即:1+3+4+1 = 9;


求代码?是否需要再加一辅助列?

[此贴子已经被作者于2016/3/19 22:23:24编辑过]

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/3/20 10:50:00 [只看该作者]

If e.DataCol.Name = "第一列" Then
    Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("子")
    Dim v As List(Of String)
    Dim sum As Integer
    For Each dr As DataRow In drs
        Dim v1 = dr("第一列") & "|" & dr("第二列")
        If v.Contains(v1) Then
            Continue For
        Else
            v.Add(v1)
            sum += dr("数量")
        End If
    Next
    e.DataRow("总数量") = sum
End If

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


加好友 发短信
等级:二尾狐 帖子:526 积分:5083 威望:0 精华:0 注册:2015/4/15 15:25:00
  发帖心情 Post By:2016/3/21 11:40:00 [只看该作者]

请老师帮忙,上面的代码放在父表DataColChanged事件:发生了异常,未将对象引用设置到对象的实例。

另外,子表代码怎么写,能够即时更新父表总数量
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目160321.table


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/21 11:51:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目160321.table


 回到顶部