Foxtable(狐表)用户栏目专家坐堂 → [求助]即时同步数据时,同步当前表只显示最后增加的记录(问题已解决)


  共有3147人关注过本帖平板打印复制链接

主题:[求助]即时同步数据时,同步当前表只显示最后增加的记录(问题已解决)

帅哥哟,离线,有人找我吗?
sjx71
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:469 积分:4545 威望:0 精华:0 注册:2013/5/22 15:32:00
[求助]即时同步数据时,同步当前表只显示最后增加的记录(问题已解决)  发帖心情 Post By:2015/11/19 17:36:00 [只看该作者]

在即时同步程序中,删除记录、修改记录、增加记录都可以实现即时同步

 

如果我最后一次操作是增加记录,无论是增加一条记录或多条记录,保存后,在别的客户端能够显示新增加的记录

 

但再点同步当前表或同步所有表,那么该表就会只显示最后增加的一条记录。

 

请老师帮我看看程序。

 

谢谢!

 

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编辑过]

 回到顶部
总数 14 1 2 下一页