以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关联表显示 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=137604) |
|||||||||
-- 作者:13775189031 -- 发布时间:2019/7/10 14:53:00 -- 关联表显示 父表:角钢进料台账 子表:角钢进料表明细 关联列:进料表编号 想实现:子表中“U8出库”均为TRUE,相应父表中“状态_U8出库”自动显示为TRUE 子表中“未发料数量”均小于等于0,相应父表中“状态_发料完成”自动显示为TRUE 代码要怎么修改?
|
|||||||||
-- 作者:13775189031 -- 发布时间:2019/7/10 14:54:00 --
[此贴子已经被作者于2019/7/10 14:55:07编辑过]
|
|||||||||
-- 作者:有点蓝 -- 发布时间:2019/7/10 15:08:00 -- 用法一样,参考着做:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=137425&skin=0 |
|||||||||
-- 作者:13775189031 -- 发布时间: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 详细错误信息: 调用的目标发生了异常。 列“状态_发料完成”不属于表 角钢进料表明细。 |
|||||||||
-- 作者:狐狸爸爸 -- 发布时间:2019/7/10 16:13:00 -- 错误提示已经很清楚了,“状态_U8出库”和状态_发料完成”两列,并不存在于 角钢进料表明细表,也就是列名错了,注意列名和列标题不同,有时你看到的是列标题,并非列名: http://www.foxtable.com/webhelp/topics/0033.htm 请仔细检查核对 |
|||||||||
-- 作者:13775189031 -- 发布时间: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 -- 发布时间:2019/7/10 16:35:00 -- 确认是列名不是列标题 |
|||||||||
-- 作者:有点蓝 -- 发布时间:2019/7/10 16:59:00 -- 应该是代码放错地方了 |
|||||||||
-- 作者:13775189031 -- 发布时间:2019/7/11 8:26:00 -- 都在datacolchanged里呀
还是麻烦老师帮我看看
[此贴子已经被作者于2019/7/11 8:29:39编辑过]
|
|||||||||
-- 作者:有点蓝 -- 发布时间: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
|