我有一个表单,我从访问中的表中检索开始日期和结束日期。
开始日期和结束日期都称为startdate和endate。 然后我有另一列状态。
我的代码是这样的:
sd = Me.startdate
ed = Me.enddate
DateValue (sd)
DateValue (ed)
If IsNull(sd And ed) Or (ed > Date) Then
Me.Text59 = "In use"
ElseIf (ed < Date) Then
Me.Text59 = "Free"
基本上我想做的是,如果结束日期早于今天,状态将显示为Free。但是,如果结束日期晚于今天,则状态将被使用。开始日期和结束日期为空的列也将显示为使用中。
我的表的开始日期和结束日期是日期/时间数据类型。
当代码运行时,它们只显示&#34;在使用中&#34;很明显我的一些日期早于今天结束!请帮助):
答案 0 :(得分:0)
你没有告诉startdate或enddate是否为Null而另一个不是,所以两者都将为Null或保持值。此外,startdate似乎总是早于enddate,因此并不重要。
然后:
Dim sd As Variant
Dim ed As Variant
Dim inuse As Boolean
sd = Me!startdate
ed = Me!enddate
If IsNull(sd) And IsNull(ed) Then
inuse = True
ElseIf DateDiff("d", Date, ed) > 0 Then
inuse = True
End If
If inuse = True Then
Me!Text59 = "In use"
Else
Me!Text59 = "Free"
End If
对于 Text59 的 ControlSource 的单行代码(如果ed
为空,则Nz仅用于避免错误):
=IIf(IsNull([startdate]+[enddate]),"In use",IIf(DateDiff("d",Date(),Nz(ed, Date()))>0,"In use","Free"))