Foxtable(狐表)用户栏目专家坐堂 → 即时同步数据的问题


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

主题:即时同步数据的问题

美女呀,离线,留言给我吧!
xiaohuli
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
即时同步数据的问题  发帖心情 Post By:2015/10/29 17:47:00 [只看该作者]

刚开始学习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,我们可以保存某行数据后,通知其他好友,这一行的数据有变化,请重新加载,这样就能做到即时、高效了。这个到底怎么实现?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/29 17:54:00 [只看该作者]

1、你把服务器QQ启动了吗?

 

2、你打开多个客户端QQ了吗?

 

3、你在ReceivedMessage事件加入msgbox,看是否接收到了信息

 

msgbox(e.Message)

 

在保存按钮,加入msgbox,看是否发送了信息

 

QQClient.Send(bd.name, msg)

msgbox("发送了")


 回到顶部
美女呀,离线,留言给我吧!
xiaohuli
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
  发帖心情 Post By:2015/10/30 10:37:00 [只看该作者]

在保存按钮上弹出了msgbox,但是在QQClient的ReceivedMessage中没有弹出msgbox,服务端还需要写什么代码不?服务端qq登录了,打开了多个客户端也登录了qq。

[此贴子已经被作者于2015/10/30 10:37:30编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/30 10:57:00 [只看该作者]

1、你是在本机测试,还是在不同的计算机上测试?

 

如果是本机测试,就打开服务器QQ、打开两个客户端QQ,登陆,然后在某个客户端QQ,发送信息,就会弹出;

 

2、如果不同电脑测试。你的服务器ip不能设置成127.0.0.1啊,要指明局域网或互联网的具体ip才行


 回到顶部
美女呀,离线,留言给我吧!
xiaohuli
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
  发帖心情 Post By:2015/10/30 11:11:00 [只看该作者]

客户端,服务端都是在本地测试的,我不明白的是这句话,多用户环境下,任何一个客户端做的修改、增加,删除,保存后都会立即体现在其他客户端上。

这句话的意思是当修改,增加,删除数据后,是自动体现在其他客户端上,还是qq来发送消息,通知其他好友数据已经改变?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/30 11:33:00 [只看该作者]

1、通过 QQClient.Send(bd.name, msg) 发送信息,接收到信息后,动态执行编写的代码,做什么事都可以啊。

 

2、比如删除发送信息, 删除#1024 那么,获取信息后,就知道是删除了第1024行的数据,那么对应的把此行也删除一下。


 回到顶部
美女呀,离线,留言给我吧!
xiaohuli
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
  发帖心情 Post By:2015/10/30 11:44:00 [只看该作者]

问题是,当我新增一行数据保存后,保存按钮和QQClient的ReceivedMessage事件中都弹出了msgbox,但是没有通知给好友呀,没有在其他在线的好友的客户端上体现出来,数据已经修改的问题。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/30 11:51:00 [只看该作者]

弹出msgbx就行了啊,根据发送的信息,写代码啊。

 回到顶部
美女呀,离线,留言给我吧!
xiaohuli
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
  发帖心情 Post By:2015/10/30 11:54:00 [只看该作者]

老师,当弹出了msgbox后,那我应该在哪里写代码呀,能不能写个小例子。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/30 11:57:00 [只看该作者]

以下是引用xiaohuli在2015/10/30 11:54:00的发言:

老师,当弹出了msgbox后,那我应该在哪里写代码呀,能不能写个小例子。

 

帮助文档就有啊,在ReceivedMessage写到任何代码啊

 

http://www.foxtable.com/help/topics/3006.htm

 


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