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


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

主题:关联表显示

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


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

这样没问题了!


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


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

父表:角钢进料表明细
子表:角钢每日发料明细
关联列:进料表编号
想实现:父表中未发数量小于等于0,且子表中“U8出库”均为TRUE,相应父表中“U8出库”自动显示为TRUE
父表代码要怎么修改?
父表:Select Case e.DataCol.name
    Case "进料表编号"
        If e.DataRow.IsNull("进料表编号") Then
            DataTables("角钢每日发料明细").DeleteFor("进料表编号='" & e.DataRow("进料表编号") & "'")
            e.DataRow("U8出库") = False
        Else
            If e.DataRow.GetChildRows("角钢每日发料明细").Count > 0
                Dim cnt As Integer = DataTables("角钢每日发料明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and U8出库=false")
                e.DataRow("U8出库") = (cnt=0)
            End If
        End If
End Select

子表:Dim dr2 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "U8出库"
        If dr2("U8出库")=False Then
            dr2("存货编码") = Nothing
        Else
            dr2 = DataTables("存货信息表").Find("规格 = '" & e.DataRow("规格") & "' And 材质= '" & e.DataRow("材质") & "' And 长度m= '" & e.DataRow("长度m") & "'")
            If dr2 IsNot Nothing
                e.DataRow("存货编码") = dr2("存货编码")
                e.DataRow("单支重量Kg") = dr2("单支重量")
            End If
        End If
    Case "U8出库"
        Dim dr3 As DataRow = DataTables("角钢进料表明细").Find("[进料表编号] = '" & e.DataRow("进料表编号") & "'")
        If dr3 IsNot Nothing Then
            DataTables("角钢进料表明细").DataCols("进料表编号").RaiseDataColChanged(dr3)
        End If
End Select

父表通过以下代码生成子表
Select Case e.DataCol.Name
    Case "发料日期1"
        If e.DataRow.IsNull("发料日期1") = True Then
            DataTables("角钢每日发料明细").DeleteFor("进料表编号='" & e.DataRow("进料表编号") & "' And [发料日期] = '" & e.DataRow("发料日期1") & "' And [规格] = '" & e.DataRow("规格") & "' And [材质] = '" & e.DataRow("材质") & "' And [长度m] = '" & e.DataRow("长度m") & "'")
        Else
            Dim ndr1 As DataRow = DataTables("角钢每日发料明细").Find("进料表编号 = '" & e.DataRow("进料表编号") & "' And [发料日期] = '" & e.DataRow("发料日期1") & "' And [规格] = '" & e.DataRow("规格") & "' And [材质] = '" & e.DataRow("材质") & "' And [长度m] = '" & e.DataRow("长度m") & "'")
            If ndr1 Is Nothing Then
                Dim ndr As Row = Tables("角钢每日发料明细").AddNew
                ndr("进料表编号") = e.DataRow("进料表编号")
                ndr("工程名称") = e.DataRow("工程名称")
                ndr("塔型") = e.DataRow("塔型")
                ndr("规格") = e.DataRow("规格")
                ndr("材质") = e.DataRow("材质")
                ndr("长度m") = e.DataRow("长度m")
                ndr("实发支数") = e.DataRow("实发支数_1")
                ndr("货位") = e.DataRow("货位")
                ndr("发料日期") = e.DataRow("发料日期1")
                ndr("仓储配料员") = e.DataRow("仓储配料员")
                ndr.Move(0)
            End If
        End If
End Select



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


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

e.DataRow("U8出库") = (cnt=0 andalso e.DataRow("未发数量") <= 0)

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


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

增加一些条件判断,还请老师看看需要如何改?
父表:角钢进料表明细
子表:角钢每日发料明细
关联列:进料表编号
想实现:判断父表中进料表编号、工程名称、塔型、机组、规格、材质等等与子表中相同的,未发数量小于等于0,且子表中“U8出库”均为TRUE,相应父表中“U8出库”自动显示为TRUE
父表代码要怎么修改?

Select Case e.DataCol.name
    Case "进料表编号"
        If e.DataRow.IsNull("进料表编号") Then
            DataTables("角钢每日发料明细").DeleteFor("进料表编号='" & e.DataRow("进料表编号") & "' And [工程名称] = '" & e.DataRow("工程名称") & "' And [塔型] = '" & e.DataRow("塔型") & "' And [机组] = '" & e.DataRow("机组")  & "' And [规格] = '" & e.DataRow("规格") & "' And [材质] = '" & e.DataRow("材质") & "' And [长度m] = '" & e.DataRow("长度m") & "'")
            e.DataRow("U8出库") = False
        Else
            If e.DataRow.GetChildRows("角钢每日发料明细").Count > 0
                Dim cnt As Integer = DataTables("角钢每日发料明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and U8出库=false")
                e.DataRow("U8出库") = (cnt=0 AndAlso e.DataRow("未发数量") <= 0)
            End If
        End If
End Select

子表
Dim dr2 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "U8出库"
        If dr2("U8出库")=False Then
            dr2("存货编码") = Nothing
        Else
            dr2 = DataTables("存货信息表").Find("规格 = '" & e.DataRow("规格") & "' And 材质= '" & e.DataRow("材质") & "' And 长度m= '" & e.DataRow("长度m") & "'")
            If dr2 IsNot Nothing
                e.DataRow("存货编码") = dr2("存货编码")
                e.DataRow("单支重量Kg") = dr2("单支重量")
            End If
        End If
    Case "U8出库"
        Dim dr3 As DataRow = DataTables("角钢进料表明细").Find("[进料表编号] ='" & e.DataRow("进料表编号") & "' And [工程名称] = '" & e.DataRow("工程名称") & "' And [塔型] = '" & e.DataRow("塔型") & "' And [机组] = '" & e.DataRow("机组")  & "' And [规格] = '" & e.DataRow("规格") & "' And [材质] = '" & e.DataRow("材质") & "' And [长度m] = '" & e.DataRow("长度m") & "'")
        If dr3 IsNot Nothing Then
            DataTables("角钢进料表明细").DataCols("进料表编号").RaiseDataColChanged(dr3)
        End If
End Select


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


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

没看懂,截图说明一下

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


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

父表里的每一行,根据不同的发料时间,在子表中生成多行,
想实现:判断父表中进料表编号、工程名称、塔型、机组、规格、材质等等与子表中相同的,未发数量小于等于0,且子表中“U8出库”均为TRUE,相应父表中“U8出库”自动显示为TRUE

此主题相关图片如下:1562917057(1).png
按此在新窗口浏览图片

,

[此贴子已经被作者于2019/7/12 15:47:10编辑过]

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


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

Dim cnt As Integer = DataTables("角钢每日发料明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and U8出库=false")
Dim cnt2 As Integer = DataTables("角钢每日发料明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and 工程名称='" & e.DataRow("工程名称")  & "' and 其它列添加自己补齐")

e.DataRow("U8出库") = (cnt=0 AndAlso e.DataRow("未发数量") <= 0 andalso cnt2 > 0)

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


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

改了一下,还是不行

父表
Select Case e.DataCol.name
    Case "进料表编号"
        If e.DataRow.IsNull("进料表编号") Then
            DataTables("角钢每日发料明细").DeleteFor("进料表编号='" & e.DataRow("进料表编号") & "' And [工程名称] = '" & e.DataRow("工程名称") & "' And [塔型] = '" & e.DataRow("塔型") & "' And [机组] = '" & e.DataRow("机组")  & "' And [规格] = '" & e.DataRow("规格") & "' And [材质] = '" & e.DataRow("材质") & "' And [长度m] = '" & e.DataRow("长度m") & "'")
            e.DataRow("U8出库") = False
        Else
            If e.DataRow.GetChildRows("角钢每日发料明细").Count > 0
                Dim cnt As Integer = DataTables("角钢每日发料明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and U8出库=false")
                Dim cnt2 As Integer = DataTables("角钢每日发料明细").Compute("count(进料表编号)","进料表编号='" & e.NewValue  & "' and 工程名称='" & e.DataRow("工程名称")  & "'and 塔型='" & e.DataRow("塔型")  & "'and 机组='" & e.DataRow("机组")  & "'and 规格='" & e.DataRow("规格") & "'and 材质='" & e.DataRow("材质") & "'and 长度m ='" & e.DataRow("长度m") & "'")
                e.DataRow("U8出库") = (cnt=0 AndAlso e.DataRow("未发数量") <= 0 AndAlso cnt2 > 0)
            End If
        End If
End Select

子表
Dim dr2 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "U8出库"
        If dr2("U8出库")=False Then
            dr2("存货编码") = Nothing
        Else
            dr2 = DataTables("存货信息表").Find("规格 = '" & e.DataRow("规格") & "' And 材质= '" & e.DataRow("材质") & "' And 长度m= '" & e.DataRow("长度m") & "'")
            If dr2 IsNot Nothing
                e.DataRow("存货编码") = dr2("存货编码")
                e.DataRow("单支重量Kg") = dr2("单支重量")
            End If
        End If
    Case "U8出库"
        Dim dr3 As DataRow = DataTables("角钢进料表明细").Find("[进料表编号] ='" & e.DataRow("进料表编号") & "' And [工程名称] = '" & e.DataRow("工程名称") & "' And [塔型] = '" & e.DataRow("塔型") & "' And [机组] = '" & e.DataRow("机组")  & "' And [规格] = '" & e.DataRow("规格") & "' And [材质] = '" & e.DataRow("材质") & "' And [长度m] = '" & e.DataRow("长度m") & "'")
        If dr3 IsNot Nothing Then
            DataTables("角钢进料表明细").DataCols("进料表编号").RaiseDataColChanged(dr3)
        End If
End Select



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


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

截图说明

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


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

以第一行为例,分两次发料,发料日期为2019.07.12和2019.07.20
在子表中生成两行,对应的是第三行和第六行,这两行中“U8出库”均为True,但父表中“U8出库”没有自动显示
图片点击可在新窗口打开查看此主题相关图片如下:1562919672(1).png
图片点击可在新窗口打开查看

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

[此贴子已经被作者于2019/7/12 16:37:40编辑过]

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