誰かが時間外に働いているかどうかを判断するための簡単な vba 関数を開発しました。これは私が書いた元のクエリです。
Public Function AfterHours(StartTime As Date, EndTime As Date, ActivityDate As Date)
AfterHours = False
If (Weekday(ActivityDate) <> 1 OR Weekday(ActivityDate) <> 7) Then
If Hour(StartTime) >= 19 Or Hour(EndTime) < 7 Then
AfterHours = True
End If
Else
AfterHours = True
End If
End Function
ただし、このクエリは、通常の営業時間中に週末に働くスタッフをピックアップしません。それを次のように変更すると:
Public Function AfterHours(StartTime As Date, EndTime As Date, ActivityDate As Date)
AfterHours = False
If (Weekday(ActivityDate) = 1 Or Weekday(ActivityDate) = 7) Then
AfterHours = True
Else
If Hour(StartTime) >= 19 Or Hour(EndTime) < 7 Then
AfterHours = True
End If
End If
End Function
クエリは正しく機能します。両方のロジックは同じで、逆になっているだけです。最初の関数では、週末でない場合は営業時間外かどうかをテストする必要があります。それ以外の場合は週末であり、フラグを立てる必要があります。2 番目の関数は、週末かどうかをチェックしてフラグを立てます。そうでない場合は、営業時間外かどうかをチェックします。
これらのクエリが異なる結果を返す理由がわかりません。