以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  急:用OpenQQ实现独占式编辑的开发版本问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76956)

--  作者:乡里出城
--  发布时间:2015/11/8 22:30:00
--  急:用OpenQQ实现独占式编辑的开发版本问题
如果按帮助里的用OpenQQ实现独占式编辑来使用,开发版的是不是也是限制最多20个用户在线编辑啊,如果从以前独占式方式改用OpenQQ实现独占式编辑的话,是不是要买高级开发版或永久开发版,如下图:

客户端的设计

1、在客户端项目的全局代码中,加入如下代码:

Public tbrk As new List(of String)

tbrk是一个集合,用于记录当前用户正在编辑的行,接下来编码的时候,我们用表名加上行的主键值来表示某行。

2、在客户端的对应表的StartEdit事件中编写代码:

Dim r As Row = e.Table.Current
If
r.DataRow.RowState = DataRowState.Added Then \'新增行正常编辑
   
Return

End
If
If
QQClient.Ready = False Then \'如果QQClient没有启动,则禁止编辑
    PopMessage(
"
必须启动QQClient,才能编辑此表数据!","提示",PopIconEnum.Infomation,5)
    e.Cancel = True
   
Return

End
If
Dim
key As String = e.Table.DataTable.Name  & ":" & r("_Identify")
If
tbrk.Contains(key) Then \'如果 本人之前已经编辑此行,则正常编辑
   
Return

Else
\'如果 本人之前没有编辑此行
    Dim msg = QQClient.SendWait("?#" & Key & "#?",5)
\'
向服务器发送请求编辑信息
    If msg = "OK" Then
\'
如果服务器返回OK
        tbrk.Add(key)
\'
在本地登记正在编辑此行
    ElseIf msg > "" Then
\'
否则显示服务器返回的信息,并取消编辑
        PopMessage(
"
无法编辑此行,因为:" & vbcrlf & msg ,"提示",PopIconEnum.Infomation,5)
        e.Cancel = True
    Else
\'
如果服务器没有返回信息,则取消编辑
        PopMessage(
"
因服务器无响应,无法编辑此行!" ,"提示",PopIconEnum.Infomation,5)
       
e.Cancel = True
    End
If

End
If


--  作者:Hyphen
--  发布时间:2015/11/9 8:35:00
--  
超过20个用户同时在线编辑,而又想用OpenQQ实现独占式编辑,只能用高级开发版或永久开发版
--  作者:大红袍
--  发布时间:2015/11/9 9:12:00
--  
你可以结合两者嘛,如果用户达到20的时候,其余的用户就用旧的独占方式处理。
--  作者:mxm121
--  发布时间:2015/11/9 10:23:00
--  
那还如不不改呢
--  作者:狐狸爸爸
--  发布时间:2015/11/9 10:30:00
--  
这个月有优惠,趁机升级到高级开发版吧,有openQQ,开发网络软件方便太多了
[此贴子已经被作者于2015/11/9 10:31:34编辑过]

--  作者:乡里出城
--  发布时间:2015/11/9 14:13:00
--  
那只能购买了,我现在是怕这个问题,我想买一个永久的,可是我怕狗万一掉了,肉比之前的疼啊,之前掉也才5000,现在如果掉的是15000啊
--  作者:大红袍
--  发布时间:2015/11/9 14:29:00
--  
 不要想着丢狗的问题。不能想着会出车祸就不买车吧。