以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]有条件求和  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=82533)

--  作者:qwz405
--  发布时间: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
--  发布时间: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
--  发布时间:2016/3/21 11:40:00
--  
请老师帮忙,上面的代码放在父表DataColChanged事件:发生了异常,未将对象引用设置到对象的实例。

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


--  作者:大红袍
--  发布时间:2016/3/21 11:51:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目160321.table