以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于独占式编辑的问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133300)

--  作者:fengwenliuyan
--  发布时间:2019/4/11 15:35:00
--  关于独占式编辑的问题?
关于独占式编辑的问题?
第1个问题:
同时以2个用户名为“开发者”、“意和入库员”的身份打开项目,
在以用户名为“开发者”的身份打开的项目中,在“仓管表窗口_入库订单表”中,新增一行,客户输入“66”,
在以用户名为“意和入库员”的身份打开的项目中,在“仓管表窗口_入库订单表”中,新增一行,客户输入“77”,
然后各自保存项目,再各自点击项目下方的“全显”按钮,会发现此时的“仓管表窗口_入库订单表”中,“客户”为66和77的“订单编号”是相同的,这样就失去了独占式编辑的意义了,求帮助?

第2个问题:
当用户名为“开发者”的身份打开的项目,点击“客户”名为2,进入编辑后,再点击“客户”名为3,进入编辑,
再以用户名为“意和入库员”的身份打开的项目,点击“客户”名为2,会发现,被锁行了,
除非是当用户名为“开发者”的身份打开的项目,点击“客户”名为2,进入编辑后,先保存数据,取消禁止编辑行,才可以,
求换行时,之前的行自动解锁“因独占式造成的锁行状态”,
求帮助?


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



--  作者:有点甜
--  发布时间:2019/4/11 15:40:00
--  

1、订单编号的生成,参考

 

http://www.foxtable.com/webhelp/scr/1994.htm

 

2、关闭项目以后,重新打开项目测试


--  作者:fengwenliuyan
--  发布时间:2019/4/11 17:53:00
--  回复:(有点甜)1、订单编号的生成,参考?h...
这方法已经测试了,没有解决即时同步数据的问题,容易出现同行数据覆盖的现象,
要是能解决以下功能,应该就能完美了:
1、当前行进入编辑后,独占式启动,禁止其他用户编辑此行数据,
这一点,独占式编辑我已经会了。
2、换行后,也就是“光标闪烁”离开当前行后,自动保存当前行的数据?
3、单击表中的任一单元格,则同步当前表,且光标闪烁至当前单击的单元格位置?

这应该是最土最有效的办法了吧?
这代码应该怎么写,写在哪儿,
求帮助?
[此贴子已经被作者于2019/4/11 17:54:44编辑过]

--  作者:有点甜
--  发布时间:2019/4/11 17:58:00
--  

即时同步比较麻烦,需要引入openQQ处理,参考

 

http://www.foxtable.com/webhelp/scr/3006.htm

 

 

 


--  作者:fengwenliuyan
--  发布时间:2019/4/11 18:11:00
--  回复:(有点甜)即时同步比较麻烦,需要引入openQQ处...
不用用到openqq,就我上面提到的几个功能,只要转化成代码就能实现即时同步了啊?
--  作者:fengwenliuyan
--  发布时间:2019/4/11 18:57:00
--  回复:(fengwenliuyan)回复:(有点甜)即时同步比较...
求帮助


--  作者:fengwenliuyan
--  发布时间:2019/4/11 19:17:00
--  回复:(fengwenliuyan)回复:(fengwenliuyan)回复...
刚才说的方法:
1、当前行进入编辑后,独占式启动,禁止其他用户编辑此行数据,
这一点,独占式编辑我已经会了。
2、换行后,也就是“光标闪烁”离开当前行后,自动保存当前行的数据?
3、单击表中的任一单元格,则同步当前表,且光标闪烁至当前单击的单元格位置?

针对性,刚弄的:

第2点的方法:BeforeSelChange事件:
If e.OldRange.RowSel <> e.NewRange.RowSel 
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then 
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) 
        r.Save() \'保存之
    End If
End If

这个第2点的方法,不知道,对应所有表(包括窗口表),应该怎么改?

第3点的方法:Click事件
If CurrentTable.DataTable.Name = "入库订单表" Then \'如果选择的主表是订单表
CurrentTable.DataTable.LoadFilter = ""
CurrentTable.DataTable.Load
End If

这个第3点的方法,一旦数据量大了,会影响运行速度,能否加一个判断,也就是同步表内“结单”列=false的行,
但是,这样同步表后,当前行会自动跳到首行了,不知道,要跳转回点选的单元格所在行,应该怎么做?
且,对应所有表(包括窗口表),应该怎么改?
我已经努力在尝试改了,求帮助,谢谢!?
[此贴子已经被作者于2019/4/11 19:43:07编辑过]

--  作者:fengwenliuyan
--  发布时间:2019/4/11 20:37:00
--  
求帮助
--  作者:fengwenliuyan
--  发布时间:2019/4/11 22:52:00
--  
刚看了几个小时的openQQ的帮助,发现一个问题,通过openqq实现的即时同步,并不是两个用户的项目中的表中数据行自动同步变化,而是通过内置的openqq聊天窗口发送推送窗口信息,提醒对方手动加载新的数据?
如果是这样的话,那意义就不大了?
求说明,是不是我哪里理解错了?

--  作者:fengwenliuyan
--  发布时间:2019/4/12 10:04:00
--  回复:(有点甜)即时同步比较麻烦,需要引入openQQ处...
求帮助