以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  openqq 即时同步的问题?(感谢!已搞定)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=132902)

--  作者:manyifuwu
--  发布时间:2019/4/1 20:50:00
--  openqq 即时同步的问题?(感谢!已搞定)
帮助里的,在编辑窗口加一个保存按钮,按钮代码设置为:
Dim r As Row = Tables("A").Current
Dim
 p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#""U#")
r
.Save()
\'
一定要在保存后合成信息,因为新增行的主键在保存后才生成
Dim
 msg As String = p & "A" & "#" & r("_Identify")
For
 Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    
End If
Next

登录openqq ,这个对主表有效,
因几台电脑打开这个项目,窗口里的表A,如果用的sql表。怎样能也如同主表A一样,即时同步呢?
谢谢!
[此贴子已经被作者于2019/4/1 22:46:42编辑过]

--  作者:有点蓝
--  发布时间:2019/4/1 21:08:00
--  
用法完全一样,没有区别。把表名改为窗口表的名称即可。

可以加多一个判断,如果窗口打开,或者存在这个窗口表名称的表的时候,就同步加载

--  作者:manyifuwu
--  发布时间:2019/4/1 21:17:00
--  
Dim r As Row = Tables("派工_Table1").Current
Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
r.Save()
\'一定要在保存后合成信息,因为新增行的主键在保存后才生成
Dim msg As String = p & "派工_Table1" & "#" & r("_Identify")
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    End If
Next

这样怎么没有生效呢?


--  作者:有点蓝
--  发布时间:2019/4/1 21:21:00
--  
接收数据一样要改啊
--  作者:manyifuwu
--  发布时间:2019/4/1 21:21:00
--  
如果窗口打开,怎么判定呢?感谢


--  作者:有点蓝
--  发布时间:2019/4/1 21:24:00
--  
http://www.foxtable.com/webhelp/scr/0705.htm
--  作者:manyifuwu
--  发布时间:2019/4/1 21:53:00
--  
就是不知道接收数据这那改?


--  作者:有点蓝
--  发布时间:2019/4/1 22:03:00
--  
发送


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

接收

Dim msg As String = e.Message
If msg.StartsWith("U#") Then \'表示修改了某行
    Dim pts() As String = msg.Split("#")
    If pts.Length >= 3 Then
        If pts.Length = 4
            If Forms(pts(3)).Opened = False Then Return
        End If
        Dim dr As DataRow = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
        If dr IsNot Nothing  Then
            dr.Load() \'重新加载此行
        End If
    End If
ElseIf msg.StartsWith("A#") Then \'表示增加了行
    Dim pts() As String = msg.Split("#")
    If pts.Length >= 3 Then
        If pts.Length = 4
            If Forms(pts(3)).Opened = False Then Return
        End If
        DataTables(pts(1)).AppendLoad("[_Identify] = " &  pts(2)) \'追载新增加的行.
    End If
ElseIf msg.StartsWith("D#") Then \'表示删除了行
    Dim pts() As String = msg.Split("#")
    If pts.Length >= 3 Then
        If pts.Length = 4
            If Forms(pts(3)).Opened = False Then Return
        End If
        DataTables(pts(1)).RemoveFor("[_Identify] = "  & pts(2)) \'移除行
    End If
End If

--  作者:manyifuwu
--  发布时间:2019/4/1 22:46:00
--  
感谢您!