以文本方式查看主题

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

--  作者:jygyyl
--  发布时间:2022/8/1 16:15:00
--  [求助]非关联表之间的数据同步
现有cjb和jsb,想非关联同步。两个表代码如下:
cjb的DataColChanged
If e.DataCol.Name = "箱号" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("jsb").Find("转运箱码 = \'" & e.DataRow("箱号") & "\'")
    If dr IsNot Nothing  Then\'如果找到, 则设置各列内容
        e.DataRow("接收时间") = dr("接收时间")
        e.DataRow("接收人姓名") = dr("接收人姓名")
        e.DataRow("接收实验室") = dr("接收实验室")
    End If
End If

重置”箱号“可以实现表间数据同步。

jsb的DataColChanged
Select Case e.DataCol.name
    Case "接收时间", "接收人姓名", "接收实验室"
        Dim dr As DataRow = DataTables("cjb").Find("箱号 = \'" & e.DataRow("转运箱码") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

jsb与cjb存在1对多的关系,上述代码只能同步第一行数据,其他相同箱号的数据没有同步,求老师指点完善代码。谢谢!

--  作者:有点蓝
--  发布时间:2022/8/1 16:22:00
--  
返回多行数据改为使用select:http://www.foxtable.com/webhelp/topics/0400.htm
--  作者:jygyyl
--  发布时间:2022/8/1 17:33:00
--  回复:(有点蓝)返回多行数据改为使用select:http:/...
实在不会,请老师示范!谢谢!
--  作者:有点蓝
--  发布时间:2022/8/1 17:44:00
--  
帮助里就有现成的呀,改下表名、列名而已

Select Case e.DataCol.name
    Case "接收时间", "接收人姓名", "接收实验室"
Dim drs As List(Of DataRow)
drs = DataTables("
cjb").Select("箱号 = \'" & e.DataRow("转运箱码") & "\'")
For Each 
dr As Datarow In drs
   
dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
Next
End Select

--  作者:jygyyl
--  发布时间:2022/8/2 18:06:00
--  回复:(有点蓝)帮助里就有现成的呀,改下表名、列名...
搞定,谢谢蓝版!