审批流程的实现

假定某个表的行需要经过一个录入、审核和批准的流程,要求:

1、主管负责审核,经理负责批准。
2、先审核后批准,禁止批准未通过审核的行。
3、禁止编辑已经通过审核的行。
4、对于已经通过批准的行,禁止取消审核。
3、能记录审核人和审核日期以及批准人和批准日期。

首先在表中加入审核、审核日期、批准、批准日期四列。
然后在菜单或者窗口中加入审核、批准、取消审核、取消批准四个按钮,代码分别为:

按钮 代码
审核 If User.Group = "主管" Then
    Tables(
"表A").Current("审核") = User.Name
    Tables(
"表A").Current("审核日期") = Date.Today()
    Tables(
"表A").Current.Save()
Else

    MessageBox.show(
"你无审核权限!")
End
If
批准 If User.Group = "经理" Then
    If Tables(
"表A").current.IsNull("审核") Then
       
MessageBox.Show("不能批准还未通过审核的行.")
   
Else
        Tables(
"A").Current("批准") = User.Name
        Tables(
"A").Current("批准日期") = Date.Today()
       
Tables("表A").Current.Save()
    End If
Else
    MessageBox.show("你无批准权限!")
End If
取消审核 If User.Group = "主管" Then
   
If Tables("表A").Current.IsNull("批准") Then
       
Tables("表A").Current("审核") = Nothing
       
Tables("表A").Current("审核日期") = Nothing
       
Tables("表A").Current.Save()
    Else
        MessageBox.Show(
"此行已被批准,不能取消审核!")
   
End If
Else

   
MessageBox.show("你无取消审核权限!")
End
 If
取消批准 If User.Group = "经理" Then
    Tables("A").Current("批准") = Nothing
    Tables(
"A").Current("批准日期") = Nothing
    Tables("表A").Current.Save()
Else
    MessageBox.show("你无取消批准权限!")
End If

最后将表事件PrepareEdit的代码设置为:

If e.Row.IsNull("审核") = False Then '如果审批列不为空
    e.Cancel =
True '则禁止编辑
End
If

用于禁止修改已经通过审核的行。


本页地址:http://www.foxtable.com/webhelp/topics/2351.htm