以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 跨表统计 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194293) |
||||
-- 作者:13775189031 -- 发布时间:2024/11/25 16:04:00 -- 跨表统计 请教老师:“原材料采购明细表”中“到齐”列全部勾选,则“预算清单”中的“当前进展_完成"自动打钩,只要“原材料采购明细表”“到齐”列有任何一行未打钩,则“预算清单”中的“当前进展_完成"都不打钩 下面的代码有什么问题?“预算清单”没有自动勾选 Select Case e.DataCol.name Case "预算编号" If e.DataRow.IsNull("预算编号") Then DataTables("原材料采购明细表").DeleteFor("预算编号=\'" & e.DataRow("预算编号") & "\'") e.DataRow("当前进展_完成") = False Else If e.DataRow.GetChildRows("原材料采购明细表").Count > 0 Dim cnt As Integer = DataTables("原材料采购明细表").Compute("count(预算编号)","预算编号=\'" & e.NewValue & "\' and (到齐 = False )") e.DataRow("当前进展_完成") = (cnt=0) End If End If End Select
|
||||
-- 作者:有点蓝 -- 发布时间:2024/11/25 16:24:00 -- Select Case e.DataCol.Name
Case "到齐" Dim pr As DataRow pr = DataTables("预算清单").Find("预算编号 = \'" & e.DataRow("预算编号") & "\'") If pr IsNot Nothing Then DataTables("预算清单").DataCols("预算编号").RaiseDataColChanged(pr) End If End Select |
||||
-- 作者:13775189031 -- 发布时间:2024/11/25 16:49:00 -- 很奇怪,点击“到齐”会自动增加一行 Dim dr2 As DataRow = e.DataRow Select Case e.DataCol.Name Case "到货_数量" If dr2.IsNull("到货_数量") = False Then \'如果数量或单价为空 dr2("收货人") = User.name Else dr2("收货人") = Nothing End If Case "到齐" Dim dr As DataRow = DataTables("预算清单").Find("[预算编号] = \'" & e.DataRow("预算编号") & "\'") If dr IsNot Nothing Then DataTables("预算清单").DataCols("预算编号").RaiseDataColChanged(dr) End If End Select
|
||||
-- 作者:有点蓝 -- 发布时间:2024/11/25 17:05:00 -- 和这里代码没有关系,检查其它地方代码 |
||||
-- 作者:13775189031 -- 发布时间:2024/11/26 10:56:00 -- 请老师帮忙看下,哪里的问题,在"原材料采购明细表"中点击“到全”就会增加行,而且“预算清单”中也无法显示“到全”(“到全”的列名就是“当前进展_完成”)
|
||||
-- 作者:13775189031 -- 发布时间:2024/11/26 10:57:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2024/11/26 11:11:00 -- 开发者密码? |
||||
-- 作者:13775189031 -- 发布时间:2024/11/26 11:23:00 -- 147258 |
||||
-- 作者:有点蓝 -- 发布时间:2024/11/26 11:54:00 -- 代码的逻辑有问题,总共判断了3个表,但是代码是先后的顺序,并不是同时满足,或者满足其中一个的关系。 这种代码最终只有最后一段有效,也就是判断"电气外购件采购明细表"这个表,前面2个表的判断完全没有用处的
Select Case e.DataCol.name Case "预算编号" If e.DataRow.IsNull("预算编号") Then DataTables("原材料采购明细表").DeleteFor("预算编号=\'" & e.DataRow("预算编号") & "\'") e.DataRow("当前进展_完成") = False Else MsgBox("count=" & e.DataRow.GetChildRows("原材料采购明细表").Count) If e.DataRow.GetChildRows("原材料采购明细表").Count > 0 Dim cnt As Integer = DataTables("原材料采购明细表").Compute("count(预算编号)", "预算编号=\'" & e.NewValue & "\' and (到全 = False )") MsgBox("cnt=" & cnt) e.DataRow("当前进展_完成") = (cnt=0) End If End If End Select Select Case e.DataCol.name Case "预算编号" If e.DataRow.IsNull("预算编号") Then DataTables("机械外购件采购明细表").DeleteFor("预算编号=\'" & e.DataRow("预算编号") & "\'") e.DataRow("当前进展_完成") = False Else If e.DataRow.GetChildRows("机械外购件采购明细表").Count > 0 Dim cnt As Integer = DataTables("机械外购件采购明细表").Compute("count(预算编号)","预算编号=\'" & e.NewValue & "\' and (到全 = False)") e.DataRow("当前进展_完成") = (cnt=0) End If End If End Select Select Case e.DataCol.name Case "预算编号" If e.DataRow.IsNull("预算编号") Then DataTables("电气外购件采购明细表").DeleteFor("预算编号=\'" & e.DataRow("预算编号") & "\'") e.DataRow("当前进展_完成") = False Else If e.DataRow.GetChildRows("电气外购件采购明细表").Count > 0 Dim cnt As Integer = DataTables("电气外购件采购明细表").Compute("count(预算编号)","预算编号=\'" & e.NewValue & "\' and (到全 = False)") e.DataRow("当前进展_完成") = (cnt=0) End If End If End Select |
||||
-- 作者:13775189031 -- 发布时间:2024/11/26 12:54:00 -- 那要怎么修改能够同时满足?我把后面两段代码删掉以后,“原材料采购明细表”点击“到全”,还是会生成行 [此贴子已经被作者于2024/11/26 13:12:56编辑过]
|