Access 2013:我正在尝试返回今天的日期,其中是/否字段标记为"是"

时间:2017-06-09 16:06:53

标签: date iif

我试图在日期字段中返回今天的日期,此时另一个字段标记为"是"。我尝试了以下表达但无济于事。我对表达的经验有限,非常感谢任何指导。如果该字段没有"是"日期字段可以为空白。我无法将默认设置为"否"对于已批准的字段。

批准日期:IIf([已批准] =真,今天(),空)

如果我设置日期,它会起作用,但日期是动态的,所以这不是真的有用。 批准日期:IIf([已批准] = True,2016年5月1日,无效)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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)在Approved复选框的AfterUpdate事件中,输入:

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

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

(旧回答2)

根据您的回答,您可以做的是向Approved控件添加AfterUpdate事件,其中包含以下内容:

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

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

(旧答案1)

我认为你倒退了。 当[已批准]设置为True时,设置[ApprovedDate] = Today()。这样,它就会保存到表格中,并且您可以获得批准时间的永久记录。