Access 2013:当 yes/no 字段标记为 "Yes" 时,我正在尝试 return 今天的日期

Access 2013: I am trying to return today's date when a yes/no fields is marked as "Yes"

我正在尝试 return 日期字段中的今天日期,而另一个字段被标记为 "Yes"。我尝试了以下表达式但无济于事。我对表达的经验有限,非常感谢任何指导。如果该字段没有 "Yes",则日期字段可以为空。我无法将 Approved 字段的默认值设置为 "No"。

批准日期:IIf([Approved]=True,Today(),Null)

如果我设置日期,它会起作用,但日期是动态的,所以这不是很有帮助。 批准日期:IIf([Approved]=True,5/1/2016,Null)

提前感谢您的帮助。

好的,所以我花了一点时间研究如何用表达式来做到这一点。答案是你不能,至少不能没有辅助函数。所以,我的混合解决方案是:

1) 在标准模块中创建函数:

Public Function SetControlValue( _
    ByVal ctlControl As Access.Control, _
    ByVal varValue As Variant, _
    Optional ByVal varTest As Variant = True)
        If (varTest) Then
            ctlControl.Value = varValue
        End If
End Function

2) 在已批准复选框的 AfterUpdate 事件中,输入:

=SetControlValue([ApprovedDate],Date(),([Approved]=True) AND (IsNull([ApprovedDate])))

这种方法可以避免在表单下制作 class 模块。并且您可以将所有此类代码保存在一个公共模块中,这样您就可以为其他形式构建此类函数的库。


(旧答案 2)

根据您的回答,您可以向 Approved 控件添加一个 AfterUpdate 事件,其作用类似于:

Private Sub Approved_AfterUpdate() 
    If (Approved.Value = True) And IsNull(ApprovedDate.Value) Then 
        ApprovedDate.Value = Date()
    End If
End Sub

这将设置一次批准日期,即首次选中批准复选框时。如果您需要不同的行为,可以轻松修改。


(旧答案 1)

我认为你搞反了。 当 [Approved] 设置为 True 时,设置 [ApprovedDate] = Today()。这样,它就会保存到 table,并且您可以永久记录它何时获得批准。