以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  数据同步更新问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=80618)

--  作者:zchlln
--  发布时间:2016/1/27 14:42:00
--  数据同步更新问题
表A新增数据时,表B同步增加数据。表A格式不完全和表B一样,表B需要几列数据依靠表A更新,表B进行更改时,表A不发生变化 那位大神帮看下应该怎么编写
--  作者:大红袍
--  发布时间:2016/1/27 14:49:00
--  

参考

 

http://www.foxtable.com/help/topics/2490.htm

 

列名不同的话,

 

dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)

 

就改成

 

dr("B表某列1") = e.DataRow("A表某列1")

dr("B表某列2") = e.DataRow("A表某列2")


--  作者:zchlln
--  发布时间:2016/1/27 15:36:00
--  
的确可以 但表A删除的时候 我不想让表B跟着删 还有就是更改产品编号的话 表B会另起一行而不是在之前那行
[此贴子已经被作者于2016/1/27 15:36:46编辑过]

--  作者:大红袍
--  发布时间:2016/1/27 15:37:00
--  
你把 DataRowDeleting 的代码去掉即可。
[此贴子已经被作者于2016/1/27 15:36:51编辑过]

--  作者:zchlln
--  发布时间:2016/1/27 15:39:00
--  
我没写 DataRowDeleting 的代码 也删除表A 表B也会删除掉的


--  作者:大红袍
--  发布时间:2016/1/27 15:41:00
--  

你做个例子上传上来测试一下。


--  作者:zchlln
--  发布时间:2016/1/27 15:41:00
--  
还有就是更改产品编号的话 表B会另起一行而不是在之前那行
--  作者:大红袍
--  发布时间:2016/1/27 15:42:00
--  
看6楼。
--  作者:zchlln
--  发布时间:2016/1/27 16:00:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:大红袍
--  发布时间:2016/1/27 16:14:00
--  
Select Case e.DataCol.name
    Case "第一列"
        Dim dr As DataRow
        If e.OldValue = Nothing
            dr = DataTables("表B").Find("第一列 = \'" & e.newvalue & "\'")
        Else
            dr = DataTables("表B").Find("第一列 = \'" & e.OldValue & "\'")
        End If
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew()
            dr("第一列") = e.DataRow("第一列")
            dr("第二列") = e.DataRow("第二列")
            dr("第三列") = e.DataRow("第三列")
        Else
            dr("第一列") = e.DataRow("第一列")
        End If
    Case "第三列","第二列"
        Dim dr As DataRow = DataTables("表B").Find("第一列 = \'" & e.DataRow("第一列") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select