以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于审批功能的一个重要问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68662)

--  作者:乡里出城
--  发布时间:2015/5/22 10:15:00
--  [求助]关于审批功能的一个重要问题

如帮助图文里提到的,写了下面这个代码是实现已审批则不能修改的功能


If e.Col.Name = "审批" Then \'只有经理才能审批
    If User.Group <> "经理"  Then
        e.Cancel = True
    End If
ElseIf
e.Row("
审批") = True Then \'如果此行已经审批了,则禁止修改
    e.Cancel = True
End
If


可现在有一个问题,A是录入员,B是审批人,A已经录入好一条行数据保存好还没退出,B刚刚好打开表看到这条行数据马上审批保存退出了,这时A又修改把刚才录入的那条行数据改了一个金额再保存数据,结果就B审批的数据不是之前那条,而是A最后修改成功的数据,想请教各位应该怎么解决这个问题,是不是参考工作流与并发冲突就可以解决了?

[此贴子已经被作者于2015/5/22 10:17:06编辑过]

--  作者:大红袍
--  发布时间:2015/5/22 10:17:00
--  

独占编辑

 

http://www.foxtable.com/help/topics/2295.htm

 


--  作者:Bin
--  发布时间:2015/5/22 10:17:00
--  
帮助看完整, 里面有包括独占编辑等 http://www.foxtable.com/help/topics/2295.htm



--  作者:乡里出城
--  发布时间:2015/5/22 10:23:00
--  
应该不存在独占式编辑,A已经录入好一条行数据保存好还没退出,B这里再进来应该可以编制了吧?我试一试
[此贴子已经被作者于2015/5/22 10:24:45编辑过]

--  作者:Bin
--  发布时间:2015/5/22 10:23:00
--  
你现在需要的就是这个
--  作者:大红袍
--  发布时间:2015/5/22 10:30:00
--  

 或者换一种思路,代码这样写

 

If e.Col.Name = "审批" Then \'只有经理才能审批
    If User.Group <> "经理"  Then
        e.Cancel = True
    End If
ElseIf e.Row.DataRow.SQLGetValue("审批") = True Then \'如果此行已经审批了,则禁止修改
    e.Cancel = True
End If


--  作者:乡里出城
--  发布时间:2015/5/22 10:32:00
--  
请分别启动多个Foxtable打开此文件,并以不同的用户登录,同一行只要有人开始编辑,那么直到此人保存此行,其他人都不能编辑此行。我试了,不是我所说的那个意思
--  作者:乡里出城
--  发布时间:2015/5/22 10:36:00
--  
对,就是这个写法才对,谢谢了
--  作者:乡里出城
--  发布时间:2015/5/22 10:39:00
--  
大红袍写的思路是我要的,其实估计很多都是使用外部数据库的,刚才我提的这个功能其实能在帮助教程有提到是不是会更好
--  作者:大红袍
--  发布时间:2015/5/22 10:53:00
--  
以下是引用乡里出城在2015/5/22 10:39:00的发言:
大红袍写的思路是我要的,其实估计很多都是使用外部数据库的,刚才我提的这个功能其实能在帮助教程有提到是不是会更好

 

嗯嗯,直接获取后台数据的功能,是最近才有的,之前要写一堆的sql语句,所以不会在描述一个简单功能的时候提及。

 

http://www.foxtable.com/help/topics/2955.htm