在即时同步程序中,删除记录、修改记录、增加记录都可以实现即时同步
如果我最后一次操作是增加记录,无论是增加一条记录或多条记录,保存后,在别的客户端能够显示新增加的记录
但再点同步当前表或同步所有表,那么该表就会只显示最后增加的一条记录。
请老师帮我看看程序。
谢谢!
OpenQQ客户端RecievedMessage事件代码如下:
Dim dr1 As DataRow = DataTables("信息").AddNew
dr1("发送者") = iif(e.UserName > "",e.UserName,"服务器")
dr1("时间") = Date.Now()
dr1("信息") = e.Message
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
全局表事件BeforeSaveDataRow 代码如下:
If e.DataTable.name <> "信息" Then
Dim r As DataRow = e.DataRow
Dim p As String = IIF(r.RowState = DataRowState.Added, "A#", "U#")
Dim msg As String = p & e.DataTable.Name & "#" & r("_Identify")
For Each bd As QQBuddy In QQClient.Buddies
If bd.Online Then
QQClient.Send(bd.name, msg)
End If
Next
End If
[此贴子已经被作者于2015/11/30 9:51:36编辑过]