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


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

主题:独占式编辑问题

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
独占式编辑问题  发帖心情 Post By:2018/5/5 2:01:00 [只看该作者]

用户A弹出一个订单窗口界面,新建一行addnew:

假设订单编号 005, 然后textbox1 绑定的客户名称是空的。用户A做其它事情,一直没有输入客户名称等订单资料


接着用户B弹出同样的订单窗口界面,  loadfilter打开是订单编号005,然后用户B输入客户名称等订单资料。

等用户B输入完订单资料,用户A才开始在刚才打开订单窗口的订单编号005的订单输入资料。

这样的结果导致订单和订单明细混乱,两者交叉在一起了。

问题1. 是否要用独占式编辑解决?
问题2. 窗口怎么用独占式编辑限制不能同时编辑同一行


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


加好友 发短信
等级:超级版主 帖子:107757 积分:548124 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/5 8:22:00 [只看该作者]

问题1:
1、新建一行addnew后先不要保存,等全部编辑完毕再保存,编号统一管理,参考:http://www.foxtable.com/webhelp/scr/3008.htm
2、使用独占式编辑解决

问题2:参考:http://www.foxtable.com/webhelp/scr/2342.htm,结合独占式编辑代码大概这样:

文本框的Enter事件代码设置为:

Dim canedit As Boolean

Dim r As Row = Tables("表A").Current

If r.DataRow.RowState = DataRowState.Added Then '新增行正常编辑

    Return

End If

If QQClient.Ready = False Then '如果QQClient没有启动,则禁止编辑

    PopMessage("必须启动QQClient,才能编辑此表数据!","提示",PopIconEnum.Infomation,5)

Else

    Dim key As String = "表A:" & r("_Identify")

    If tbrk.Contains(key) Then '如果 本人之前已经编辑此行,则正常编辑

        canedit = True

    Else '如果 本人之前没有编辑此行

        Dim msg = QQClient.SendWait("?#" & Key & "#?",5) '向服务器发送请求编辑信息

        If msg = "OK" Then '如果服务器返回OK

            tbrk.Add(key) '在本地登记正在编辑此行

            canedit = True

        ElseIf msg > "" Then '否则显示服务器返回的信息,并取消编辑

            PopMessage("无法编辑此行,因为:" & vbcrlf & msg ,"提示",PopIconEnum.Infomation,5)

        Else '如果服务器没有返回信息,则取消编辑

            PopMessage("因服务器无响应,无法编辑此行!" ,"提示",PopIconEnum.Infomation,5)

        End If

    End If

End If

Dim ctl As WinForm.Control = e.Sender

ctl.ReadOnly = IIF(canedit ,BooleanEnum.False,BooleanEnum.True )


可以把蓝色部分代码放到函数中,其它地方统一调用


 回到顶部