修改删除命令的权限控制
作者 babyrong0205   查看 558   发表时间 2008/7/30 09:28  【论坛浏览】
我写了一段代码,想实现2个功能:iftbz
iftbz
1. 在未关闭状态下,只有提交人本人可以修改、删除本人的单子,其他人没有权限;iftbz
iftbz
2. 在关闭状态下,任何人都没有权限对单子进行修改、删除操作;iftbz
iftbz
但是执行结果貌似不对,好像是把所有人的权限都收回了,大任何人都不能修改了。iftbz
iftbz
请各位给分析分析!!iftbz
先谢了!iftbz
' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''iftbz
Function defect_AccessControl(actionname, actiontype, username)iftbz
' actionname As Stringiftbz
' actiontype As Longiftbz
' username As Stringiftbz
' defect_AccessControl As Booleaniftbz
' action is modifyiftbz
' record type name is Defectiftbz
defect_AccessControl = Limit(username)iftbz
End Functioniftbz
' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''iftbz
REM Start of Global Script RS_CheckAccessiftbz
REM TODO -- put your script code hereiftbz
Function Limit(param)iftbz
' param As Variantiftbz
' record type name is Defectiftbz
REM add your hook code hereiftbz
DIM submitternameiftbz
Dim persionresult,statement,stateresultiftbz
statement = GetFieldValue("State").GetValue()iftbz
submittername = GetFieldValue("submitter").GetValue()iftbz
' MsgBox "statement = " & statementiftbz
stateresult = (statement = "已关闭")iftbz
persionresult = (submittername = param)iftbz
' MsgBox "param = " & paramiftbz
' MsgBox "submittername = " & submitternameiftbz
' MsgBox "result = " & resultiftbz
iftbz
if stateresult Theniftbz
MsgBox "处于关闭状态的表单,不允许任何人修改或者删除"iftbz
defect_Limit = Falseiftbz
elseiftbz
if persionresult Theniftbz
MsgBox "在生命周期中,只有本人可以进行修改删除或者操作"iftbz
defect_Limit = Trueiftbz
elseiftbz
MsgBox "在生命周期中,非本人不允许修改或者删除"iftbz
defect_Limit = Falseiftbz
End ififtbz
End ififtbz
iftbz
End Functioniftbz
REM End of Global Script RS_CheckAccess

序号 评论者 共有评论 7   【论坛浏览】  【发表评论】 评论时间
1 babyrong0205 怎么可以这么冷清呢?

门可罗雀啊

慧眼们给看看吧 -_-
2008/7/31 16:38
2 fish 在close和modify的action写一点就行了,搞这么多几乎是没有看明白。 2008/7/31 16:50
3 babyrong0205 回复 板凳 的帖子
恩,对modify单独写代码代码限制是可以的,主要是考虑到有好几个action操作都涉及到类似的操作,所以才把公共的部分拉出来单独写的,这样重用性高些
2008/7/31 16:57
4 ljs53 你的代码看起来比较难懂


' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function defect_AccessControl(actionname, actiontype, username)
' actionname As String
' actiontype As Long
' username As String
' defect_AccessControl As Boolean
' action is modify
' record type name is Defect
Dim Name
Dim session

set session = Getsession
Name = session.GetUserLoginName
defect_AccessControl = Limit(Name)
End Function
' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

REM Start of Global Script RS_CheckAccess
REM TODO -- put your script code here
Function Limit(param)
' param As Variant
' record type name is Defect
REM add your hook code here
DIM submittername
Dim persionresult,statement,stateresult

statement = GetFieldValue("State").GetValue()
submittername = GetFieldValue("submitter").GetValue()
if (statement = "已关闭") Then
MsgBox "处于关闭状态的表单,不允许任何人修改或者删除"
defect_Limit = False
else
if submitter = param Then
MsgBox "在生命周期中,只有本人可以进行修改删除或者操作"
defect_Limit = True
else
MsgBox "在生命周期中,非本人不允许修改或者删除"
defect_Limit = False
End if
End if

End Function
REM End of Global Script RS_CheckAccess
以上代码我没有调试 你可以试试
2008/8/1 08:46
5 yunshan 错误原因很简单,就是你的limit函数的返回值有问题,
定义的全局函数的名称是limit,但返回值却是defect_limit,显然是错误的,所以只要将limit函数中的defect_limit改成limit应该就可以了。
2008/8/1 10:06
6 babyrong0205 回复 6# 的帖子
终于有慧眼了,果然是这个问题,自己太粗心了。
谢谢啦!
2008/8/1 15:45
7 among 哈哈
vb的function可以有返回值,sub没有返回值
function的返回值就是function的名字。

哈哈,前些日子我也学了下vb
2008/8/1 22:18
 共有评论数 7  每页显示 10
页码 1/1  |<  <<   1   >>  >|