Foxtable(狐表)用户栏目专家坐堂 → 关于独占式编辑问题


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

主题:关于独占式编辑问题

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


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2021/6/16 14:11:00 [只看该作者]



Dim r As Row = Tables("订单主表").Current
'Dim A 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") & "|订单主表.订单"  & ":" & a("_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

代码报错

 回到顶部
帅哥,在线噢!
有点蓝
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106353 积分:540906 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/16 14:13:00 [只看该作者]

报什么错?

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


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2021/6/16 14:13:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:独占报错.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106353 积分:540906 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/16 14:15:00 [只看该作者]

If tbrk.Containskey(key) = False Then

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


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2021/6/16 14:28:00 [只看该作者]

1,
If tbrk.Containskey(key) = False Then改,报错下面
tbrk.Add(key) '在本地登记正在编辑此行
'tbrk.Containskey.Add(key) '在本地登记正在编辑此行



此主题相关图片如下:独占报错-1.jpg
按此在新窗口浏览图片



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


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2021/6/16 14:31:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:独占报错-2.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106353 积分:540906 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/16 14:38:00 [只看该作者]

tbrk是什么东西来的?

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


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2021/6/16 14:45:00 [只看该作者]

服务器端的设计

1、在服务器端项目的全局代码中,加入如下代码:

Public tbrk As new Dictionary(of String,String)

tbrk一个字典,用于登记每一行是谁在编辑。
我们约定接下来编码的时候:字典的键由表名和行的主键组合成,值则等于编辑者名。


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


加好友 发短信
等级:五尾狐 帖子:1152 积分:7712 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2021/6/16 14:47:00 [只看该作者]

如果是窗口编辑

上述方案针对的是直接在表中编辑数据,如果不是在表中编辑,而是在窗口编辑,编码方式也是基本相同的。
通常只需将打开编辑窗口的代码改为:

Dim r As Row = Tables("B").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 = "
B"  & ":" & 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()


这个是帮助的代码


 回到顶部
帅哥,在线噢!
有点蓝
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106353 积分:540906 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/16 14:51:00 [只看该作者]

tbrk.Add(key,"某某值") 

 回到顶部
总数 48 上一页 1 2 3 4 5 下一页