以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  三个表的数据关联  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=102581)

--  作者:bootes29
--  发布时间:2017/6/22 14:28:00
--  三个表的数据关联
各位老师,又来给大家添麻烦了,
现在有三个数据库 ,两两关联吧,
要实现数据按要求传输
拜托了~~~
图片点击可在新窗口打开查看此主题相关图片如下:未标题-4.jpg
图片点击可在新窗口打开查看

--  作者:bootes29
--  发布时间:2017/6/22 14:28:00
--  
这是样本
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目622.table


--  作者:bootes29
--  发布时间:2017/6/22 15:11:00
--  
大师今天太忙了,辛苦辛苦
--  作者:有点色
--  发布时间:2017/6/22 15:23:00
--  

 不明白你什么意思,填充数据参考

 

http://www.foxtable.com/webhelp/scr/0680.htm

 

http://www.foxtable.com/webhelp/scr/1533.htm

 


--  作者:bootes29
--  发布时间:2017/6/22 15:34:00
--  
@有点色 老师好,
您推荐的参考,我已仔细研读。
这都是两个表之前的数据流转。
我这个是这样的意思。
表b 和表d 数据结构相同,他们之间的数据关系是靠表c 来确立。
平时,我建立一个对照,比如表b编号中的 某a1 对应 我要用的 编号 是a1,某c 对应 是c
如果 某a1 更新了 数据,某c没有更新,我想让表d中的 编号是 是a1 的那一行数据更新。
-----------
是我解说的拗口

--  作者:bootes29
--  发布时间:2017/6/22 15:39:00
--  
比如下图,执行完了 
图片点击可在新窗口打开查看此主题相关图片如下:未标题-43.jpg
图片点击可在新窗口打开查看

--  作者:bootes29
--  发布时间:2017/6/22 15:41:00
--  
上面的图中 地接 错了 应该是 某a1
图片点击可在新窗口打开查看此主题相关图片如下:未标题-43.jpg
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/6/22 15:45:00
--  
Dim dtb As DataTable = DataTables("表B")
Dim dtc As DataTable = DataTables("表C")
Dim dtd As DataTable = DataTables("表d")
For Each drb As DataRow In dtb.DataRows
    Dim fdrc As DataRow = dtc.Find("别人编号 = \'" & drb("编号") & "\'")
    If fdrc IsNot Nothing Then
        Dim fdrd As DataRow = dtd.Find("编号 = \'" & fdrc("我们编号") & "\'")
        If fdrd Is Nothing Then
            fdrd = dtd.AddNew
        End If
        For Each dcb As DataCol In dtb.DataCols
            fdrd(dcb.name) = drb(dcb.name)
        Next
        fdrd("编号") = fdrc("我们编号")
    End If
Next

--  作者:bootes29
--  发布时间:2017/6/22 16:04:00
--  
万分感谢 有的色 老师,学习了!

Dim dtb As DataTable = DataTables("表B")
Dim dtc As DataTable = DataTables("表C")
Dim dtd As DataTable = DataTables("表d")

For Each drb As DataRow In dtb.DataRows
    Dim fdrc As DataRow = dtc.Find("别人编号 = \'" & drb("编号") & "\'")
    If fdrc IsNot Nothing Then
        Dim fdrd As DataRow = dtd.Find("编号 = \'" & fdrc("我们编号") & "\'")
        If fdrd Is Nothing Then
            fdrd = dtd.AddNew
        End If
        For Each dcb As DataCol In dtb.DataCols
            fdrd(dcb.name) = drb(dcb.name)
        Next
        fdrd("编号") = fdrc("我们编号")
        fdrd("地接名称") = fdrc("别人编号")
    End If
Next
--------------------------
可是,他把所有的都转了,我只想转 打钩的,拜请老师指点
图片点击可在新窗口打开查看此主题相关图片如下:未标题-45.jpg
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/6/22 16:14:00
--  

Dim dtb As DataTable = DataTables("表B")
Dim dtc As DataTable = DataTables("表C")
Dim dtd As DataTable = DataTables("表d")

Dim trv As WinForm.TreeView = Forms("关联").Controls("TreeView1")
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Checked AndAlso nd.Text <> "所有" AndAlso nd.Level = 0 Then
        Dim drb As DataRow = dtb.Find("编号 = \'" & nd.text & "\'")
        Dim fdrc As DataRow = dtc.Find("别人编号 = \'" & drb("编号") & "\'")
        If fdrc IsNot Nothing Then
            Dim fdrd As DataRow = dtd.Find("编号 = \'" & fdrc("我们编号") & "\'")
            If fdrd Is Nothing Then
                fdrd = dtd.AddNew
            End If
            For Each dcb As DataCol In dtb.DataCols
                fdrd(dcb.name) = drb(dcb.name)
            Next
            fdrd("编号") = fdrc("我们编号")
            fdrd("地接名称") = fdrc("别人编号")
        End If
    End If
Next