以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]量表的关联关系  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93531)

--  作者:紫色幽魂
--  发布时间:2016/11/30 17:30:00
--  [求助]量表的关联关系
有个主表和关联表,关联表里面有一栏是逻辑型的,我需要在关联表所对应逻辑列的所有行都是打钩后在主表对应的逻辑列自动打钩
也就是主表和关联表都有个是否完成列,关联表的是否完成处全部完成打钩了那么主表对应的位置也自动完成,请问应该怎么做?
我原来看到过做法,但现在想不起来了

--  作者:有点蓝
--  发布时间:2016/11/30 17:40:00
--  
关联表DataColChanged事件用find查找同一个编号的逻辑列(=false)是否有没打勾的,如果find没有值,说明全部打勾了。同样find到主表的行设逻辑列=true
--  作者:有点色
--  发布时间:2016/11/30 18:08:00
--  

 参考

 

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

 


--  作者:紫色幽魂
--  发布时间:2016/11/30 23:35:00
--  
非常感谢
--  作者:紫色幽魂
--  发布时间:2016/12/2 15:18:00
--  
Select Case e.DataCol.Name
    Case "补充完成"
        Dim pr As DataRow = e.DataRow.GetParentRow("主表")
        If pr IsNot Nothing Then
            Dim crs As List(of DataRow) = pr.GetChildRows("材料缺失")
            Dim cnt As Integer
            For Each cr As DataRow In crs
                If cr("补充完成") <> False Then
                    pr("项目完结") = True
                End If
            Next
        End If
    Case "补充情况_第1次","补充情况_第2次","补充情况_第3次","补充情况_第4次"
        If "补充情况_第1次"+"补充情况_第2次"+"补充情况_第3次"+"补充情况_第4次" >= "缺失材料_重量" Then
            e.DataRow("补充完成") = True
        End If
End Select
第一段代码在关联表有多行,我只点击了一行的补充完成单元格,主表的项目完结就变成选中状态了
第二段4个单元格值大于前面重量单元格值了“”补充完成“”也没有变为选中状态

--  作者:有点蓝
--  发布时间:2016/12/2 15:35:00
--  
抄代码前先花时间理解一下代码,如果不理解就不要随便改

Select Case e.DataCol.Name
    Case "补充完成"
        Dim pr As DataRow = e.DataRow.GetParentRow("主表")
        If pr IsNot Nothing Then
            Dim crs As List(of DataRow) = pr.GetChildRows("材料缺失")
            Dim cnt As Integer
            For Each cr As DataRow In crs
                If cr("补充完成") = True Then
                    cnt = cnt + 1
                End If
            Next
            pr("项目完结") = (crs.Count = cnt)
        End If
    Case "补充情况_第1次","补充情况_第2次","补充情况_第3次","补充情况_第4次"
        If  e.DataRow("补充情况_第1次")+ e.DataRow("补充情况_第2次")+ e.DataRow("补充情况_第3次")+ e.DataRow("补充情况_第4次") >=  e.DataRow("缺失材料_重量") Then
            e.DataRow("补充完成") = True
        End If
End Select

--  作者:紫色幽魂
--  发布时间:2016/12/2 16:41:00
--  
谢谢,是我急躁了