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


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

主题:关联表显示

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


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望: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


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

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

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


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

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


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

用法一样,参考着做:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=137425&skin=0

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


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望: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
详细错误信息:
调用的目标发生了异常。
列“状态_发料完成”不属于表 角钢进料表明细。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/7/10 16:13:00 [只看该作者]

错误提示已经很清楚了,“状态_U8出库”和状态_发料完成”两列,并不存在于 角钢进料表明细表,也就是列名错了,注意列名和列标题不同,有时你看到的是列标题,并非列名:
http://www.foxtable.com/webhelp/topics/0033.htm


请仔细检查核对


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


加好友 发短信
等级:四尾狐 帖子:807 积分:5579 威望: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

确认是列名不是列标题

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


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

应该是代码放错地方了

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


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

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


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

子表:

    Case "未发数量","U8出库"
        Dim dr1 As DataRow = DataTables("角钢进料台账").Find("[进料表编号] = '" & e.DataRow("进料表编号") & "'")
        If dr1 IsNot Nothing Then
            DataTables("角钢进料台账").DataCols("进料表编号").RaiseDataColChanged(dr1)
        End If
End Select

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