以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于系统同步刷新机制问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87264)

--  作者:benwong2013
--  发布时间:2016/7/7 8:40:00
--  关于系统同步刷新机制问题
系统是我通过SQL来作为数据服务器的,但因为首次处理,系统是通过菜单点击来启动窗体的,但昨晚发现我都没有加入任何数据或同步的机制,造成现在局域网电脑数据保存之后不能更新的问题,昨天也看了关于窗体load加载数据及用openQQ即时高效的同步数据,所以请问如下问题:

1.OpenQQ若只是用于数据同步,用永久开发版有没有对于在线用户控制?
2.若用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

下面这个是我新增保存客户代码:
Dim kjmc() As String \'控件名称
Dim kjmcjh As String = "客户名称,联系人,业务负责人,报告抬头,报告地址" \'控件名称集合
kjmc = kjmcjh.Split(",")
For i As Integer=0 To kjmc.Length-1
    If e.Form.Controls(kjmc(i)).value Is Nothing Then
        MessageBox.Show(kjmc(i) & "不能为空,请检查")
        e.Form.Controls(kjmc(i)).Select
        Return
    End If
Next
Tables("B_Client").Current.save
MessageBox.Show("保存成功")

3.是否load用于窗体table的加载,那么在保存和删除数据的时候都是需要openQQ来获得即时同步;
4.有没有其它的案例或资料详细介绍这块;

--  作者:Hyphen
--  发布时间:2016/7/7 9:23:00
--  
1、在线用户OpenQQ用户500个
2、
Dim kjmc() As String \'控件名称
Dim kjmcjh As String = "客户名称,联系人,业务负责人,报告抬头,报告地址" \'控件名称集合
kjmc = kjmcjh.Split(",")
For i As Integer=0 To kjmc.Length-1
    If e.Form.Controls(kjmc(i)).value Is Nothing Then
        MessageBox.Show(kjmc(i) & "不能为空,请检查")
        e.Form.Controls(kjmc(i)).Select
        Return
    End If
Next
Tables("B_Client").Current.save
Dim msg As String = p & "A" & "#" & Tables("B_Client").Current("_Identify")
For Each bd As QQBuddy In QQClient.Buddies
If bd.Online Then
QQClient.Send(bd.name, msg)
End If
Next
MessageBox.Show("保存成功")
3、哪个Load?Datatable(XX).Load!只要是数据表都可以用Load

--  作者:大红袍
--  发布时间:2016/7/7 9:27:00
--  

1、在线用户没有限制,但是一个人最多是添加500个好友。如果要突破限制,要改代码,通过服务器发信息过度。

 

2、写到你代码后面

 

3、是

 

4、代码你看懂了么?思路都一样的啊。


--  作者:benwong2013
--  发布时间:2016/7/7 9:57:00
--  
若是删除代码是否是这样组合(红色字体是帮助中的),另外在QQClient的ReceivedMessage事件中修改代码,是否在服务端及客户端都要增加?

If User.IsRole("客户管理员") Then
    \'原来的代码
    \'判断一个表内多行数据是否被选中一次性将其删除
    Dim dt As  Table=Tables("客户信息管理表_table1") \'注意这里一定是绑定的副表,如果是tables("业务")那么如果不保存数据将不能删除
    Dim cont As Integer=0
Dim msg As String = "D#" & "A" & "#" & r("_Identify")
    For Each rw As Row In dt.Rows
        If rw.Checked =False  Then \'判断选中的行是不是等于总行数
            cont=cont+1
        End If
    Next
    If cont<>dt.Rows.count Then \'如果不等于总行数,肯定有被选中的行,直接删除即可,如果相等说明没有选中,则提示
        Dim Result As DialogResult \'加一个提示窗口,如果点确认就删除,点否就返回
        result=  MessageBox.show("您确认要删除吗?","~温馨提示~",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
        If result=DialogResult.Yes Then
            For Each r As Row In Tables("客户信息管理表_table1").GetCheckedRows
                r.Delete
                Tables("客户信息管理表_table1").Current.Save
            Next
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    
End If
Next
        Else
            Return \'返回
        End If
    Else
        MessageBox.show("您未选择行,请选择后再点击删除按钮","~温馨提示~",MessageBoxButtons.OK,MessageBoxIcon.Error)
    End If
Else
    MessageBox.show("你无权执行此项操作!")
End If

--  作者:大红袍
--  发布时间:2016/7/7 10:04:00
--  

你的r在哪里,delete在哪里,就写在哪里。


--  作者:benwong2013
--  发布时间:2016/7/7 10:11:00
--  
明白了,代码理解错了,谢谢!

另外在QQClient的ReceivedMessage事件中修改代码,是否在服务端及客户端都要增加?

--  作者:大红袍
--  发布时间:2016/7/7 10:28:00
--  
以下是引用benwong2013在2016/7/7 10:11:00的发言:

另外在QQClient的ReceivedMessage事件中修改代码,是否在服务端及客户端都要增加?

 

帮助文档里面的,服务器端不需要额外添加任何代码。只有在你想突破500好友限制,才需要用服务器转发信息。


--  作者:benwong2013
--  发布时间:2016/7/7 19:47:00
--  
这个是修改保存的代码:

Dim kjmc() As String \'控件名称
Dim kjmcjh As String = "客户名称,联系人,业务负责人,报告抬头,报告地址" \'控件名称集合
kjmc = kjmcjh.Split(",")
For i As Integer=0 To kjmc.Length-1
    If e.Form.Controls(kjmc(i)).value Is Nothing Then
        MessageBox.Show(kjmc(i) & "不能为空,请检查")
        e.Form.Controls(kjmc(i)).Select
        Return
    End If
Next
Dim r As Row = Tables("B_Client").Current
Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
r.save
Dim msg As String = p & "B_Client" & "#" & r("_Identify")
MessageBox.Show(msg)
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    End If
Next
MessageBox.Show("保存成功")
e.Form.close

点击保存能显示 U#B_Client#3063

另外在QQOPEN设置了通知触发代码;

若客户端修改了之后,另外一个客户端不点击load的话,是不会进行即时更新的,请问是哪里设置的问题;
[此贴子已经被作者于2016/7/7 19:47:43编辑过]

--  作者:大红袍
--  发布时间:2016/7/7 20:05:00
--  

 你要运行服务器端项目才能使用OpenQQ功能的啊。好好把帮助文档看完。

 

 加入msgbox代码,看各个事件是否触发了,是否进入执行了代码。

[此贴子已经被作者于2016/7/7 20:05:28编辑过]

--  作者:benwong2013
--  发布时间:2016/7/8 13:54:00
--  
版主,看了N遍了还是搞不明白,如下:

是否依照帮助http://www.foxtable.com/webhelp/scr/3006.htm设置了按键的功能,在QQOpen的服务端及客户端也是设置了,但有如下:

是否需要进行客户端及服务端进行架设之后,更新之后客户端之后才可以收到同步?