以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [原创]表达式有无乘积(像求和sum这种)的功能  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108812)

--  作者:leeswayne
--  发布时间:2017/10/30 11:58:00
--  [原创]表达式有无乘积(像求和sum这种)的功能
一个订单(作为父表)涉及多个产品的发货明细(作为子表),两个表都有“已收款”的逻辑列,希望子表的不同产品都是“已收款”为真后,父表的“已收款”也自动变为真,现在想到的办法就是父表的这个逻辑列等于子表逻辑列的乘积,但是好像没有像sum一类很方便的表达式?
--  作者:有点甜
--  发布时间:2017/10/30 12:02:00
--  

参考 http://www.foxtable.com/webhelp/scr/2649.htm

 

如果用公式,可以sum后,对比count的值。

 

或者看看 http://www.foxtable.com/webhelp/scr/2472.htm

 


--  作者:leeswayne
--  发布时间:2017/10/30 12:44:00
--  
谢谢老师,完美解决!
--  作者:leeswayne
--  发布时间:2017/10/30 14:00:00
--  
老师,再麻烦请教一下,因为逻辑列有两列,分别是"货款已收"和"货款赊欠",对“货款已收”列,是子表所有值均为真后父表也为真;但是对“货款赊欠”一列,是只要订单子表还有任意一笔未付清,父表就要为真,这个代码需要怎么改一下呢?
--  作者:有点甜
--  发布时间:2017/10/30 14:15:00
--  
If e.DataCol.name = "审核" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("订单")
    If pr IsNot Nothing Then
        Dim crs As List(of DataRow) = pr.GetChildRows("订单明细")
        Dim cnt As Integer = 0
        For Each cr As DataRow In crs
            If cr("审核") = True
                cnt = cnt + 1
            End If
        Next
        pr("审核") = iif(cnt >= 1, true, false)
    End If
End If
[此贴子已经被作者于2017/10/30 14:16:05编辑过]

--  作者:leeswayne
--  发布时间:2017/10/30 15:25:00
--  
谢谢老师!不懂代码,实在是麻烦您了!