Foxtable(狐表)用户栏目专家坐堂 → 关联表显示


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

主题:关联表显示

美女呀,离线,留言给我吧!
13775189031
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 10:34:00 [只看该作者]

子表里改好了
父表在增加行后,输入进料表编号,列“状态_发料完成”就自动勾选了

子表:Dim dr2 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "实发支数_1","实发支数_2","实发支数_3","派料支数"
        If dr2.IsNull("派料支数") AndAlso dr2.IsNull("实发支数_1") AndAlso dr2.IsNull("实发支数_2") AndAlso dr2.IsNull("实发支数_3") Then '如果数量或单价为空
            dr2("未发数量") = Nothing
        Else
            dr2("未发数量") = dr2("派料支数") - dr2("实发支数_1")- dr2("实发支数_2")- dr2("实发支数_3")
        End If
   Case "未发数量","U8出库"
        Dim dr1 As DataRow = DataTables("角钢进料台账").Find("[进料表编号] = '" & e.DataRow("进料表编号") & "'")
        If dr1 IsNot Nothing Then
            DataTables("角钢进料台账").DataCols("进料表编号").RaiseDataColChanged(dr1)
        End If
End Select

父表 Select Case e.DataCol.name
    Case "进料表编号"
        If e.DataRow.IsNull("进料表编号") Then
            DataTables("角钢进料表明细").DeleteFor("进料表编号='" & e.DataRow("进料表编号") & "'")
            e.DataRow("状态_发料完成") = False
            e.DataRow("状态_U8出库") = False
        Else
            If e.OldValue Is Nothing
                Dim ndr As Row = Tables("角钢进料表明细").AddNew
                ndr("进料表编号") = e.DataRow("进料表编号")
                ndr("工程名称") = e.DataRow("工程名称")
                ndr("塔型") = e.DataRow("塔型")
                ndr("仓储配料员") = e.DataRow("仓储配料员")
                ndr.Move(0)
            End If
            Dim cnt As Integer = DataTables("角钢进料表明细").Compute("sum(未发数量)","进料表编号='" & e.NewValue  & "'")
            Dim dr As DataRow
            If cnt <= 0 AndAlso cnt <> Nothing Then
                e.DataRow("状态_发料完成") =(cnt<=0 AndAlso dr Is Nothing)
                dr = DataTables("角钢进料表明细").Find("进料表编号='" & e.DataRow("进料表编号") & "'and (U8出库=false)")
            End If
            e.DataRow("状态_U8出库") = (cnt<=0 AndAlso dr Is Nothing)
        End If
End Select

If e.DataCol.Name = "工程名称"
    Dim Filter As String = "[进料表编号] = '" & e.DataRow("进料表编号") & "'"
    Dim drs As List(Of DataRow) = DataTables("角钢进料表明细").Select(Filter)
    For Each dr2 As DataRow In drs
        dr2("工程名称") = e.DataRow("工程名称")
    Next
End If

If e.DataCol.Name = "塔型"
    Dim Filter As String = "[进料表编号] = '" & e.DataRow("进料表编号") & "'"
    Dim drs As List(Of DataRow) = DataTables("角钢进料表明细").Select(Filter)
    For Each dr2 As DataRow In drs
        dr2("塔型") = e.DataRow("塔型")
    Next
End If

If e.DataCol.Name = "仓储配料员"
    Dim Filter As String = "[进料表编号] = '" & e.DataRow("进料表编号") & "'"
    Dim drs As List(Of DataRow) = DataTables("角钢进料表明细").Select(Filter)
    For Each dr2 As DataRow In drs
        dr2("仓储配料员") = e.DataRow("仓储配料员")
    Next
End If

[此贴子已经被作者于2019/7/11 10:36:13编辑过]

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


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



Select Case e.DataCol.name
    Case "进料表编号"
        If e.DataRow.IsNull("进料表编号") Then
            DataTables("角钢进料表明细").DeleteFor("进料表编号='" & e.DataRow("进料表编号") & "'")
            e.DataRow("状态_发料完成") = False
            e.DataRow("状态_U8出库") = False
        Else
            If e.OldValue Is Nothing
                Dim ndr As Row = Tables("角钢进料表明细").AddNew
                ndr("进料表编号") = e.DataRow("进料表编号")
                ndr("工程名称") = e.DataRow("工程名称")
                ndr("塔型") = e.DataRow("塔型")
                ndr("仓储配料员") = e.DataRow("仓储配料员")
                ndr.Move(0)
            End If
If e.DataRow.GetChildRows.Count > 0
Dim cnt As Integer = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and U8出库=false")
e.DataRow("状态_U8出库") = (cnt=0)
cnt  = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and 未发数量 > 0")
e.DataRow("状态_发料完成") = (cnt=0)
end if
        End If
End Select

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 11:29:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1562815588(1).png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:107729 积分:547978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 12:00:00 [只看该作者]

If e.DataRow.GetChildRows("角钢进料表明细").Count > 0

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 12:47:00 [只看该作者]

父表在增加行后,输入进料表编号,列“状态_发料完成”还是自动勾选了!
[此贴子已经被作者于2019/7/11 13:51:55编辑过]

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


加好友 发短信
等级:超级版主 帖子:107729 积分:547978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 13:51:00 [只看该作者]

逻辑本来就是这样的啊。如果有明细,然后明细未发数量=0,就勾选

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 13:54:00 [只看该作者]

父表增加一行,子表中的"未发数量"还未记录,“状态_发料完成”就已经勾选了!


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


加好友 发短信
等级:超级版主 帖子:107729 积分:547978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 13:57:00 [只看该作者]

逻辑本来就是这样的。程序不可能知道这个数量是手工去掉的,还是本来就没有填。所以只能统一按照没有处理

 回到顶部
美女呀,离线,留言给我吧!
13775189031
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 14:31:00 [只看该作者]

能不能加个判断,“未发数量”为空时,“状态_发料完成”不勾选?

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


加好友 发短信
等级:超级版主 帖子:107729 积分:547978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 14:37:00 [只看该作者]

cnt  = DataTables("角钢进料表明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and (未发数量 > 0 or 未发数量 is null)")

 回到顶部
总数 36 上一页 1 2 3 4 下一页