以文本方式查看主题

-  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=81328)

--  作者:yupeng
--  发布时间:2016/2/24 17:42:00
--  [求助]OpenQQ实现窗口式独占式编辑

Dim r As Row = Tables("生产进度表").Current
If QQClient.Ready = False Then \'如果QQClient没有启动,则禁止编辑
    PopMessage("必须启动QQClient,才能编辑此表数据!","提示",PopIconEnum.Infomation,5)
    Return
End If
If r.DataRow.RowState <>  DataRowState.Added Then \'如果不是新增行
    Dim key As String = "生产进度表"  & ":" & r("_Identify")
    If tbrk.Contains(key) = False Then
        Dim msg = QQClient.SendWait("?#" & Key & "#?",5) \'向服务器发送请求编辑信息
        If msg = "OK" Then \'如果服务器返回OK
            tbrk.Add(key) \'在本地登记正在编辑此行
        ElseIf msg > "" Then \'否则显示服务器返回的信息,并取消编辑
            PopMessage("无法编辑此行,因为:" & vbcrlf & msg ,"提示",PopIconEnum.Infomation,5)
            Return
        Else \'如果服务器没有返回信息,则取消编辑
            PopMessage("因服务器无响应,无法编辑此行!" ,"提示",PopIconEnum.Infomation,5)
            Return
        End If
    End If
End If
Forms("编辑窗口").Open()

 

以上代码写在了客户端“表"事件DoubleClick 里面,双击打开编辑窗口。

 

然后编辑窗口AfterClose事件里面写入以下代码

 

 

Dim r As Row = Tables("生产进度表").Current
If r.DataRow.RowState = DataRowState.Modified  Then
    Dim Key As String = "生产进度表" & r("_Identify")
    If tbrk.Contains(Key) Then
        tbrk.Remove(Key) \'移除本地编辑登记
        QQClient.Send("!#" & Key & "#!") \'通知服务器此行已经结束 编辑
    End If
End If

 

其它所有代码都是按教程里做的http://www.foxtable.com/help/index.html?n=1508.htm

 

当客户端A编辑第1行,然后关闭编辑窗口后。  客户端B编辑第1行,还是会显示A在编辑。请问大师是哪里出了问题。谢谢

 

 

[此贴子已经被作者于2016/2/24 17:43:44编辑过]

--  作者:大红袍
--  发布时间:2016/2/24 18:02:00
--  

直接写

 

Dim r As Row = Tables("生产进度表").Current
Dim Key As String = "生产进度表" & r("_Identify")
If tbrk.Contains(Key) Then
    tbrk.Remove(Key) \'移除本地编辑登记
End If

QQClient.Send("!#" & Key & "#!") \'通知服务器此行已经结束 编辑


--  作者:yupeng
--  发布时间:2016/2/25 14:31:00
--  

还是不行呀,取消客户端表StartEdit  BeforeSaveDataRow  AfterEdit 这3个事件的代码后测试也不行


--  作者:大红袍
--  发布时间:2016/2/25 14:44:00
--  

测试没问题。肯定是你自己哪里搞错了。

 

请上传具体例子。


--  作者:yupeng
--  发布时间:2016/2/28 16:29:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:erp测试.rar

请大师帮我看一下  所有用户密码全部是888  谢谢


--  作者:大红袍
--  发布时间:2016/2/28 17:09:00
--  

1、"生产进度表"  & ":" & r("_Identify") 改成 "生产进度表"  & r("_Identify")

 

或者 "生产进度表" & r("_Identify") 改成 "生产进度表" & ":" & r("_Identify")

 

2、取消按钮那里,要先close窗口,再load数据

 

e.Form.Close   \'-----关闭窗口-----
Tables("生产进度表").DataTable.Load(False)


--  作者:yupeng
--  发布时间:2016/2/28 18:05:00
--  

谢谢大师