以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  同步删除行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154129)

--  作者:13775189031
--  发布时间:2020/9/4 13:06:00
--  同步删除行
请教:按照下面的代码在“原材料采购明细表”中生成行,想要“物资说明”列填写有变化后,“原材料采购明细表”中的行也自动删除,要怎么改?
Select Case e.DataCol.name
    Case "预算编号","物资说明"
        If e.DataRow.IsNull("预算编号") = True OrElse e.DataRow.IsNull("物资说明") = True Then
            DataTables("原材料采购明细表").DeleteFor("预算编号=\'" & e.DataRow("预算编号") & "\'")
        Else
            Dim ndr1 As DataRow = DataTables("原材料采购明细表").Find("预算编号 = \'" & e.DataRow("预算编号") & "\'")
            If e.DataRow("物资说明") = "原材料" Then
                Dim ndr As Row = Tables("原材料采购明细表").AddNew
                ndr("内部合同编号") = e.DataRow("内部合同编号")
                ndr("预算编号") = e.DataRow("预算编号")
                ndr("生产令号") = e.DataRow("生产令号")
                ndr("项目名称") = e.DataRow("项目名称")
                ndr("物资说明") = e.DataRow("物资说明")
                ndr("编制人") = e.DataRow("编制人")
                ndr("取消采购") = e.DataRow("取消采购")
                ndr("事业部_审核")= e.DataRow("事业部_审核")
                ndr.Move(0)
            End If
        End If
End Select


--  作者:有点蓝
--  发布时间:2020/9/4 13:47:00
--  
“物资说明”列填写有变化 -- 有什么变化?

……
        Else
            If e.DataRow("物资说明") = "原材料" Then
            Dim ndr As DataRow = DataTables("原材料采购明细表").Find("预算编号 = \'" & e.DataRow("预算编号") & "\'")
if ndr is nothing then
                ndr = dataTables("原材料采购明细表").AddNew
end if
                ndr("内部合同编号") = e.DataRow("内部合同编号")
                ndr("预算编号") = e.DataRow("预算编号")
                ndr("生产令号") = e.DataRow("生产令号")
                ndr("项目名称") = e.DataRow("项目名称")
                ndr("物资说明") = e.DataRow("物资说明")
                ndr("编制人") = e.DataRow("编制人")
                ndr("取消采购") = e.DataRow("取消采购")
                ndr("事业部_审核")= e.DataRow("事业部_审核")
                ndr.Move(0)
            End If
        End If

--  作者:13775189031
--  发布时间:2020/9/4 13:53:00
--  
例如“物资说明”由“原材料”改为“外购件”
那么就要把“原材料采购明细表”中的行删掉,改为在其他中生成相应的行

--  作者:有点蓝
--  发布时间:2020/9/4 13:59:00
--  
……
        Else
            Dim ndr1 As DataRow = DataTables("原材料采购明细表").Find("预算编号 = \'" & e.DataRow("预算编号") & "\'")
            If e.DataRow("物资说明") = "原材料" Then
                Dim ndr As Row = Tables("原材料采购明细表").AddNew
                ndr("内部合同编号") = e.DataRow("内部合同编号")
                ndr("预算编号") = e.DataRow("预算编号")
                ndr("生产令号") = e.DataRow("生产令号")
                ndr("项目名称") = e.DataRow("项目名称")
                ndr("物资说明") = e.DataRow("物资说明")
                ndr("编制人") = e.DataRow("编制人")
                ndr("取消采购") = e.DataRow("取消采购")
                ndr("事业部_审核")= e.DataRow("事业部_审核")
                ndr.Move(0)
            ElseIf e.DataCol.name = "物资说明" AndAlso e.OldValue = "原材料"
                DataTables("原材料采购明细表").deletefor("预算编号 = \'" & e.DataRow("预算编号") & "\'")
            End If
        End If
End Select