Foxtable(狐表)用户栏目专家坐堂 → 求助。刷新同步


  共有2865人关注过本帖树形打印复制链接

主题:求助。刷新同步

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


加好友 发短信
等级:二尾狐 帖子:500 积分:5409 威望:0 精华:0 注册:2009/2/5 13:09:00
求助。刷新同步  发帖心情 Post By:2016/1/25 14:45:00 [只看该作者]

我把这个代码,放在计划管理。

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

但提示出错。请问错在那???


 回到顶部
帅哥哟,离线,有人找我吗?
manyifuwu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:500 积分:5409 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2016/1/25 14:45:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/25 14:56:00 [只看该作者]

不知道代码哪有问题 但是放在计划管理中不对 
刷新同步 这里有 你可以在看看

用OpenQQ即时高效同步数据

在多用户协同工作的情况下,如果某用户修改数据后保存,其他用户只有重新加载才能看到最新的数据,参考:数据同步
实际上大多数程序,都是这种被动刷新的方式,例如你在使用网银的时候,只有刷新页面,才能看到刚刚发生的交易;在论坛浏览帖子的时候,只有刷新页面,才能看到他人刚发表的帖子。
也有一些程序,是定时刷新,不管数据有没有变动,到了一定时间,都重新加载数据。
但是上述方式,都没有办法做到即时同步,而且这些方式并非只刷新已经变动的数据,而是重新加载整个页面、甚至整个表,大大增加了服务器的负担,既不即时,也不高效。

有了OpenQQ,我们可以保存某行数据后,通知其他好友,这一行的数据有变化,请重新加载,这样就能做到即时、高效了。

设计步骤:

1、在编辑窗口加一个保存按钮,按钮代码设置为:

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

这段代码用于合成通知信息发送给好友,例如"U#表A#8"表A主键为8的行发生了修改,"A#表A#10"表示表A新增了1行,新增行的主键为10。
你可以任意定义这种格式的通知。


下面是同步


2、在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

End If


 回到顶部
帅哥哟,离线,有人找我吗?
manyifuwu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:500 积分:5409 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2016/1/25 15:12:00 [只看该作者]

谢谢。!

请问是否可以不用保存按钮,自动保存实现保存按钮功能?


 回到顶部
帅哥哟,离线,有人找我吗?
manyifuwu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:500 积分:5409 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2016/1/25 15:30:00 [只看该作者]

请问是否可以不用保存按钮,自动保存实现保存按钮功能?


 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2016/1/25 15:37:00 [只看该作者]

If Tables("表B").Rows.Count>0 Then’表不能为空,是否为这个?
Dim r As Row = Tables("派工").Current
Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/25 15:45:00 [只看该作者]

自动保存 不可控,因为选择的未必是要保存发送的行。

可以考虑放到BeforeSaveDataRow、AfterSelChange等事件中


Dim r As Row = Tables("派工").Current

if r isnot nothing then
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

end if


 回到顶部