以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  非关联表之间的数据同步,数据全部能同步,但同步删除时仅删除了商品编号,其他的删除不了?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171624)

--  作者:jsbaijin
--  发布时间:2021/9/4 20:16:00
--  非关联表之间的数据同步,数据全部能同步,但同步删除时仅删除了商品编号,其他的删除不了?
你好!请教一下 非关联表之间的数据同步,数据全部能同步,但同步删除时仅删除了商品编号,其他的删除不了?

DataColChanged事件代码

Select Case e.DataCol.name
    Case "商品编码"
        Dim dr As DataRow = DataTables("库存明细").Find("商品编码 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("库存明细").AddNew()
            dr("商品编码") = e.DataRow("商品编码")
            dr("商品类别") = e.DataRow("商品类别")
            dr("商品名称") = e.DataRow("商品名称")
            dr("规格型号") = e.DataRow("规格型号")
        Else
            dr("商品编码") = e.DataRow("商品编码")
        End If
    Case "商品名称","规格型号","商品类别"

       Dim dr As DataRow = DataTables("库存明细").Find("商品编码 = \'" & e.DataRow("商品编码") & "\'")
  If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

DataRowDeleting事件代码

Dim dr As DataRow = DataTables("库存明细").Find("商品编码 = \'" & e.DataRow("商品编码") & "\'" )
If dr IsNot Nothing Then
    dr.Delete()
End If


--  作者:有点蓝
--  发布时间:2021/9/5 20:19:00
--  
肯定是可以的。所谓的同步删除,是指仅删除了商品编号这个单元格的数据?还是指删除了整行?
--  作者:jsbaijin
--  发布时间:2021/9/6 18:01:00
--  
你好!
  我开始是将父表里的数据一齐删除时,子表里仅仅就删除了关联的列 商品编码,其他的都没有删除得了
但是我试了一下如果先删除非关联列 商品名称 商品类别  规格型号,最后删除关联列商品编码,才能同步

--  作者:有点蓝
--  发布时间:2021/9/6 20:21:00
--  
商品编码是要做关联的,肯定要最后再删除。另外如果商品编码本来有值,然后清空的,要单独判断拿出来处理

    Case "商品编码"
        Dim dr As DataRow = DataTables("库存明细").Find("商品编码 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("库存明细").AddNew()
            dr("商品编码") = e.DataRow("商品编码")
            dr("商品类别") = e.DataRow("商品类别")
            dr("商品名称") = e.DataRow("商品名称")
            dr("规格型号") = e.DataRow("规格型号")
elseif e.newvalue is nothing then
删除子表数据
        Else
            dr("商品编码") = e.DataRow("商品编码")
        End If