以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  逻辑列运算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74153)

--  作者:cwm591825
--  发布时间:2015/9/4 17:02:00
--  逻辑列运算

老师,你好!

想请教,有订单表有逻辑列“是否交齐”,关联的订单明细表也有逻辑列“是否交齐”,如果订单明细表中所有行都已交齐,订单表的逻辑行同步显示交齐,代码应如何写,谢谢!!


--  作者:大红袍
--  发布时间:2015/9/4 17:17:00
--  

表A DataColChanged 事件

 

If e.DataCol.name = "第一列" OrElse e.DataCol.name = "ddd" Then
    Dim drs As List(Of DataRow) =e.DataRow.GetChildRows("表B")
    If drs.Count = 0 Then
        e.DataRow("ddd") = False
    Else
        Dim flag As Boolean = True
        For Each dr As DataRow In drs
            If dr("qq") = False Then
                flag = False
                Exit For
            End If
        Next
        e.DataRow("ddd") = flag
    End If
End If

 

表B DataColChanged 事件

 

If e.datacol.name = "qq" then
    DataTables("表A").DataCols("ddd").RaiseDataColChanged("第一列 = \'" & e.DataRow("第一列") & "\'")
End If


--  作者:Hyphen
--  发布时间:2015/9/4 17:27:00
--  
表B(明细表) DataColChanged 事件

Dim cou As Integer
cou = e.DataTable.Compute("count(逻辑列)","逻辑列 = false and ID列 = \'" & e.DataRow("ID列") & "\'")

Dim dr As DataRow = e.DataRow.GetParentRow("表A")

If cou = 0 Then
    dr("逻辑列") = True
Else
    dr("逻辑列") = False
End If

[此贴子已经被作者于2015/9/4 17:29:24编辑过]

--  作者:cwm591825
--  发布时间:2015/9/5 14:09:00
--  

谢谢!完美解决!!