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


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

主题:关联表显示

美女呀,在线,快来找我吧!
13775189031
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
关联表显示  发帖心情 Post By:2019/7/10 14:53:00 [显示全部帖子]

父表:角钢进料台账
子表:角钢进料表明细
关联列:进料表编号
想实现:子表中“U8出库”均为TRUE,相应父表中“状态_U8出库”自动显示为TRUE
             子表中“未发料数量”均小于等于0,相应父表中“状态_发料完成”自动显示为TRUE
代码要怎么修改?

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/10 14:54:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:角钢发料管理台账.foxdb

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:角钢发料管理台账.rar


[此贴子已经被作者于2019/7/10 14:55:07编辑过]

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/10 16:03: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.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)
                dr = DataTables("角钢进料表明细").Find("进料表编号='" & e.DataRow("进料表编号") & "' and (U8出库=false)")
            End If
            e.DataRow("状态_U8出库") = (cnt<=0 AndAlso dr Is Nothing)
        End If
End Select

子表: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(dr)
        End If
End Select

运行时会出现以下提示,需要怎么修改?
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.6.18.1
错误所在事件:表,角钢进料台账, DataColChanged
详细错误信息:
调用的目标发生了异常。
列“状态_U8出库”不属于表 角钢进料表明细。

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.6.18.1
错误所在事件:表,角钢进料台账, DataColChanged
详细错误信息:
调用的目标发生了异常。
列“状态_发料完成”不属于表 角钢进料表明细。


 回到顶部
美女呀,在线,快来找我吧!
13775189031
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/10 16:31:00 [显示全部帖子]

“状态_U8出库”和状态_发料完成”两列是父表里的列,不是子表 角钢进料表明细里的列啊!
参照之前的代码改的,如下:
下面的代码中“履约完成”也是父表里的列,不是子表 管道成套项目采购明细表  里的列,但运行时没问题啊!
不明白啊!
Select Case e.DataCol.name
    Case "物资部预算编号"
        If e.DataRow.IsNull("物资部预算编号") Then
            DataTables("管道成套项目采购明细表").DeleteFor("物资部预算编号='" & e.DataRow("物资部预算编号") & "'")
            e.DataRow("履约完成") = False
        Else
            If e.OldValue Is Nothing
                Dim ndr As Row = Tables("管道成套项目采购明细表").AddNew
                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 Then
                dr = DataTables("管道成套项目采购明细表").Find("物资部预算编号='" & e.NewValue  & "' and (质保书状态=false or 理化检验结果=false)")
            End If
            e.DataRow("履约完成") = (cnt<=0 AndAlso dr Is Nothing)
        End If
End Select
[此贴子已经被作者于2019/7/10 16:31:27编辑过]

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/10 16:35:00 [显示全部帖子]

确认是列名不是列标题

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 8:26:00 [显示全部帖子]

都在datacolchanged里呀
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:角钢发料管理台账.foxdb

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:角钢发料管理台账.rar
还是麻烦老师帮我看看

父表:角钢进料台账
子表:角钢进料表明细
关联列:进料表编号
想实现:子表中“U8出库”均为TRUE,相应父表中“状态_U8出库”自动显示为TRUE
             子表中“未发料数量”均小于等于0,相应父表中“状态_发料完成”自动显示为TRUE
代码要怎么修改?
[此贴子已经被作者于2019/7/11 8:29:39编辑过]

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望: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编辑过]

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 11:29:00 [显示全部帖子]


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

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 12:47:00 [显示全部帖子]

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

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:846 积分:5858 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2019/7/11 13:54:00 [显示全部帖子]

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


 回到顶部
总数 21 1 2 3 下一页