DateDiff,如果为null,则使用以前的时间

问题描述

我希望得到我的员工输入返回办公室的时间[AActReturn0]以显示在字段[AActDrive50]中时的最终行驶时间,但是如果AActFinish5为空,我需要它去AActFinsh4,但是如果是null我需要它来检查AActFinish3,一直到AActFinish1。我不确定我在做什么错。我也尝试过Dim。我不知所措。

尝试#1:

Private Sub AActReturn0_AfterUpdate()

If AActFinish5 <> Null Then
    AActDrive50 = DateDiff("n",[AActFinish5],[AActReturn0])

ElseIf [AActFinish5] = Null Then
   AActDrive50 = DateDiff("n",[AActFinish4],[AActReturn0])

ElseIf [AActFinish4] = Null Then
   AActDrive50 = DateDiff("n",[AActFinish3],[AActReturn0])
   
ElseIf [AActFinish3] = Null Then
   AActDrive50 = DateDiff("n",[AActFinish2],[AActReturn0])

ElseIf [AActFinish2] = Null Then
   AActDrive50 = DateDiff("n",[AActFinish1],[AActReturn0])

End If

End Sub

尝试#2:

Private Sub AActReturn0_AfterUpdate()
Dim Final As String

If AActFinish5 <> Null Then Final = AActFinish5
If Final = Null Then Final = AActFinish4
If Final = Null Then Final = AActFinish3
If Final = Null Then Final = AActFinish2
If Final = Null Then Final = AActFinish1

AActDrive50 = DateDiff("n",[Final],[AActReturn0])
End Sub

解决方法

您可以使用 Nz

Private Sub AActReturn0_AfterUpdate()

    Dim Final   As Date

    Final = Nz(AActFinish5,Nz(AActFinish4,Nz(AActFinish3,Nz(AActFinish2,Nz(AActFinish1)))))

    AActDrive50 = DateDiff("n",[Final],[AActReturn0])

End Sub