以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  非关联表之间的数据同步  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47530)

--  作者:lxhmax
--  发布时间:2014/3/12 2:47:00
--  非关联表之间的数据同步

请问下帮助里面非关联表之间数据同步的代码

1、对于当前表跟库存表是一对多的关系,当我更改当前表的数据时,库存表对应的多行数据都同时改变?

2、比如产品名称,如果库存表的名称跟当前表的名称一致的时候,我修改当前表的名称时库存表的名称也跟着更改

                如果库存表的名称被单独修改后,即库存表的名称不跟当前表一样的时候,此时我修改当前表的名称时库存表的名称就不跟着更改。

麻烦问下这两个问题要怎么处理,还是有其他更好的办法来处理这个问题,谢谢各位!


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("产品规格")
        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


--  作者:Bin
--  发布时间:2014/3/12 8:32:00
--  
利用Select找到相同的数据修改即可.
假如关联列是产品编号
if e.datacol.name="产品名称" then
   if e.datarow.isnull("产品编号")=false then
        Dim drlist As List(of DataRow) = DataTables("库存").Select("产品编号 = \'" & e.DataRow("产品编号") & "\'")
      if drlist.count>0 then
         for each dr as datarow in drlist
              dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
         next
      end if
   end if
end if