以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]逻辑删除  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=91307)

--  作者:江南小城
--  发布时间:2016/10/7 16:15:00
--  [求助]逻辑删除
老师好,通过把表A逻辑列勾选把数据复制到表B已经搞好了。现在想把表A逻辑列退购后同时删除表B和表A编号相同的行。
--  作者:有点蓝
--  发布时间:2016/10/7 16:25:00
--  
DataColChanged事件

If e.DataCol.Name = "逻辑列" AndAlso e.DataRow( "逻辑列" )  = False Then
    e.DataRow.Delete
End If

--  作者:江南小城
--  发布时间:2016/10/7 17:04:00
--  
老师,我是表A逻辑列退勾删除表B(表A编号和表B编号相同的行)
--  作者:有点蓝
--  发布时间:2016/10/7 17:09:00
--  
和你复制到表B的用法一样,通过find找到表B对应的行,然后delete
--  作者:江南小城
--  发布时间:2016/10/7 20:14:00
--  
If e.DataCol.Name = "A" AndAlso e.DataRow.IsNull("编号") = False Then
    Dim dr As DataRow = DataTables("表B").Find("编号 = \'" & e.DataRow("编号") & "\'")
    If e.DataRow(e.DataCol) = True Then
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew
            For Each dc As DataCol In DataTables("表A").DataCols
                If DataTables("表B").DataCols.Contains(dc.Name) Then
                    dr(dc.Name) = e.DataRow(dc.Name)
                End If
            Next
        End If
    Else
        If dr IsNot Nothing Then
            dr.Delete
        End If
    End If
End If



老师,勾选复制有一列相同(编号)其他列名称不相同退勾删除编号相同的行。

--  作者:有点蓝
--  发布时间:2016/10/8 9:06:00
--  
If e.DataCol.Name = "A" AndAlso e.DataRow.IsNull("编号") = False Then
    Dim dr As DataRow = DataTables("表B").Find("编号 = \'" & e.DataRow("编号") & "\'")
    If e.DataRow(e.DataCol) = True Then
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew
            For Each dc As DataCol In DataTables("表A").DataCols
                If DataTables("表B").DataCols.Contains(dc.Name) Then
                    dr(dc.Name) = e.DataRow(dc.Name)
                End If
            Next
        End If
    Else
        e.DataRow.Delete
        If dr IsNot Nothing Then
            dr.Delete
        End If
    End If
End If