我在MS-Access中有一个表 - 让我们称之为tComputers.该表中的两个字段标题为Status- 具有Active,Storage,Deactivated和 - 的选项DeactivationDate.
如果我想DeactivationDate强制要求当且仅当Status取消激活的值时,我该怎么做?
如果我想当且仅当状态值为 Deactivated 时才强制执行 DeactivationDate,我该怎么做?
相反,如果停用记录稍后更改状态...比如说变为活动...应该丢弃 DeactivationDate 吗?
我认为您可以通过表级验证规则来完成此任务。在设计视图中使用 tComputers,打开属性表并将其用作验证规则属性:
IsNull([DeactivationDate])=IIf([Status]="Deactivated",False,True)
Run Code Online (Sandbox Code Playgroud)
找出当违反验证规则时您希望用户看到什么消息,并将其作为验证文本属性放入。默认消息对他们来说不太可能有任何意义。
虽然这是可能的,但我怀疑这有多大用处。用户应该通过表单编辑数据,这使您有机会在数据库引擎尝试保存数据之前强制执行验证要求...使用 Form_BeforeUpdate 事件,如 @mwolfe02 所描述。
编辑:这是 Form_BeforeUpdate 的概述。它假定您有一个名为 cboStatus 的组合绑定到 Status 字段,以及一个名为 txtRetireDate 的文本框绑定到 RetireDate 字段。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
Select Case Me.cboStatus
Case "Deactivated"
If IsNull(Me.txtRetireDate) Then
strMsg = "RetireDate is required for Status = Deactivated"
MsgBox strMsg
Me.txtRetireDate.SetFocus
Cancel = True
End If
Case "Active", "Storage"
'* what should happen here? *'
Case Else
'* what should happen here? *'
End Select
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8045 次 |
| 最近记录: |