Foxtable(狐表)用户栏目专家坐堂 → [求助]量表的关联关系


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

主题:[求助]量表的关联关系

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
[求助]量表的关联关系  发帖心情 Post By:2016/11/30 17:30:00 [只看该作者]

有个主表和关联表,关联表里面有一栏是逻辑型的,我需要在关联表所对应逻辑列的所有行都是打钩后在主表对应的逻辑列自动打钩
也就是主表和关联表都有个是否完成列,关联表的是否完成处全部完成打钩了那么主表对应的位置也自动完成,请问应该怎么做?
我原来看到过做法,但现在想不起来了

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/30 17:40:00 [只看该作者]

关联表DataColChanged事件用find查找同一个编号的逻辑列(=false)是否有没打勾的,如果find没有值,说明全部打勾了。同样find到主表的行设逻辑列=true

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/30 18:08:00 [只看该作者]


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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
  发帖心情 Post By:2016/11/30 23:35:00 [只看该作者]

非常感谢

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
  发帖心情 Post By: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个单元格值大于前面重量单元格值了“”补充完成“”也没有变为选中状态

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
  发帖心情 Post By:2016/12/2 16:41:00 [只看该作者]

谢谢,是我急躁了

 回到顶部