刚开始学习OpenQQ,
用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
这个编辑窗口是服务端的程序上的,还是客户端的程序上加的这段代码呀,我是在客户端的编辑窗口的保存按钮上加了这段代码后,在QQClient的ReceivedMessage事件中修改代码:
Dim msg As String = e.Message
If msg.StartsWith("U#") Then '表示修改了某行
Dim pts() As String = msg.Split("#")
If pts.Length = 3 Then
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
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
DataTables(pts(1)).RemoveFor("[_Identify] = " & pts(2)) '移除行
End If
End If
这些代码都加了,然后我在客户端的编辑窗口中新增一行,保存后,其他客户端上也没有体现呀。
有了OpenQQ,我们可以保存某行数据后,通知其他好友,这一行的数据有变化,请重新加载,这样就能做到即时、高效了。这个到底怎么实现?