以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多用户协同工作的情况下,想要同步关联子表数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184799)

--  作者:igewcw
--  发布时间:2023/1/4 9:15:00
--  [求助]多用户协同工作的情况下,想要同步关联子表数据
请教各位老师,在多用户协同工作的情况下,想要数据同步,按照帮助里的【openQQ及时同步】设置了如下代码,并实现了及时同步,但是确发现这个代码不能实现关联子表数据更新的同步,如:成品信息表.BOM清单
请问如何实现关联子表的数据及时同步呢?

    Dim r As Row = Tables("成品信息表").Current
    Dim p As String = IIf(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
    r.Save()
    \'一定要在保存后合成信息,因为新增行的主键在保存后才生成
    Dim msg As String = p & "成品信息表" & "#" & r("_Identify")
    For Each bd As QQBuddy In QQClient.Buddies
        If bd.Online Then
            QQClient.Send(bd.name, msg)
        End If
    Next

--  作者:有点蓝
--  发布时间:2023/1/4 9:25:00
--  
方法1、在同步的加载的地方加载子表数据,类似:http://www.foxtable.com/webhelp/topics/2228.htm
2、要发送的消息的规则是自己定义的,想要做什么可以自己定义更详细的规则,比如

Dim msg As String = p & "成品信息表" & "#" & r("_Identify") & “#BOM清单

然后在接收的时候
ElseIf msg.StartsWith("A#"Then \'表示增加了行
    Dim pts() As String = msg.Split("#")
    If pts.Length >= 3 Then
        dim drs = DataTables(pts(1)).AppendLoad("[_Identify] = " &  pts(2)) \'追载新增加的行.
    If pts.Length =4 andalso drs.count > 0 Then
         DataTables(pts(3)).Loadfilter = "关联列=\'" & drs(0)("关联列") & "\'"
         DataTables(pts(3)).Load 
    End 
If
    End If