我正处于新数据库的设计阶段,想尝试做一些更先进的事情(至少对我来说)。
我想分享一个名为“Jobs”的表。这基本上是一份工作清单和这些工作的状态。
我们的组织结构的方式意味着2个不同的部门将基本上共享这个工作,所以我将设置这个表,以便编辑前端的每个记录在两个部门之间共享(每个部门将完成在记录中适用于它们的某些字段。)
如果“部门A”编辑记录并完成他们的部分,我希望他们基本上将记录“传递”到部门B,即他们点击一个按钮,记录变为只读部门A并且只能编辑对于部门B.部门B可以随时记录。我也希望A部门选择将记录“传递”回B部门进行更多编辑(B部门验证A部门的工作,所以当出现问题时需要这样做。)
实现这一目标的直接方法是什么?我以前从未做过记录级读/写访问。
我的猜测是创建一个名为“可编辑”的列,并且当需要为特定用户锁定时,让此按钮在该字段中对着记录说“1”。然后我猜测表单上的一些VBA,查看该字段的记录并相应地更改表单的文本框编辑属性?
答案 0 :(得分:1)
根据我的理解,编辑记录基本上有3个阶段:
1:正在进行中
A部门目前正在编辑该记录。他们没有完成它,并没有准备好传递给其他人。
2:待完成
A部门尽其所能。记录未完成,需要由B部门完成和审查。
3:已锁定
部门A已完成编辑,所有数据都应锁定。
启用/禁用表单上数据编辑的逻辑表可能类似于:
+----------+---------------+---------------+---------------+
| User | 1:In Progress | 2:TBC | 3:Locked |
+----------+---------------+---------------+---------------+
| Dept A | Enable | Disable | Disable |
+----------+---------------+---------------+---------------+
| Dept B | Disable | Enable | Disable |
+----------+---------------+---------------+---------------+
从那里开始,当状态为进行中或部门B 时,我们发现除了部门A 外,应始终禁用控件。状态为待完成。
要实现这样的功能,您只需使用这些状态向数据表中添加EditStatus
字段,然后在表单的OnCurrent
事件中,根据需要锁定/解锁控件。
例如:
Private Sub Form_Current()
Dim controlLock As Boolean
controlLock = ((currentUserDepartment = "A") And (EditStatus = 1)) _
Or _
((currentUserDepartment = "B") And (EditStatus = 2))
' Now we can enable/disable çontrols '
' Alternatively, use the Locked property instead of Enabled '
txtEditJobName.Enabled = controlLock
txtEditJobDate.Enabled = controlLock
'... etc ... '
End Sub
如果需要锁定整个表单而不是单独的控件,那就更简单了:
Private Sub Form_Current()
Me.AllowEdits = ((currentUserDepartment = "A") And (EditStatus = 1)) _
Or _
((currentUserDepartment = "B") And (EditStatus = 2))
End Sub
我会让你弄清楚细节,并根据你的实际情况进行调整,但是你应该从中获得所有这些。