审批流程的实现
假定某个表的行需要经过一个录入、审核和批准的流程,要求:
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
用于禁止修改已经通过审核的行。