Я пытаюсь настроить проверку времени, чтобы предотвратить наложение в MS Access.
Я пробовал код из других форм перекрытия, но не могу понять это.
В настройке формы есть поле для оператора (оператор вводит имя), Operator_Start (оператор вводит время и дату начала), Operator_End (оператор вводит время и дату окончания).
Вся информация отправляется в таблицу с именем tbl_ActiveOperators
If DCount("*", "[tbl_ActiveOperators]", "[Operator_Start] <= Forms!frm_Job_Details.Operator_End And [Operator_End] >= Forms!frm_Job_Details.Operator_Start And [Operator] ") > 0 Then
MsgBox "Error: Times overlap"
Me.Operator_Start.SetFocus
Cancel = True
End If
Я получаю сообщение об ошибке: ошибка во время выполнения 2471: выражение, введенное вами в качестве параметра запроса, привело к этой ошибке: 'Forms! Frm_Job_Details.Operator_End'
Вот еще код, который у меня сейчас есть. Кажется, все работает, за исключением окна сообщения Time Overlap.
Private Sub Operator_Start_AfterUpdate()
If Process_Worktype <> "Reconciliation" Then
If Me.Process_Worktype.Value = "Administration NB" Then
Me.Operator_Start.Value = dhRoundTime([Operator_Start], 5)
Else
Me.Operator_Start.Value = RoundTime([Operator_Start])
End If
End If
If (Operator_Start < Forms!frm_Job_Details.[In Time]) Then
MsgBox "Error, Your Start Time cannot be before your Job In Time"
Me.Operator_Start = Forms!frm_Job_Details.[In Time]
Me.Comments.SetFocus
Me.Operator_Start.SetFocus
Exit Sub
End If
If (Operator_Start > Forms!frm_Job_Details.[Deadline]) Then
MsgBox "Error, Your Start Time cannot be after your Job Deadline"
Me.Operator_Start = Forms!frm_Job_Details.[Deadline]
Me.Comments.SetFocus
Me.Operator_Start.SetFocus
Exit Sub
End If
If (Process_Worktype <> "Reconciliation" And Operator_Start > Operator_End) Or (Len(Nz(Process_Worktype, "")) = 0 And Operator_Start > Operator_End) Then
MsgBox "Error, Your start time cannot be later than your deadline unless this is a Reconciliation"
Me.Comments.SetFocus
Me.Operator_Start.SetFocus
End If
If (Operator_Start = Operator_End) Then
MsgBox "Alert! Your start time is the same as end time. No Time billed."
Me.Comments.SetFocus
Me.Operator_Start.SetFocus
End If
'validation for overlap time
'If (Operator_Start > Operator_Start And Operator_Start < Operator_End) Then
' If DLookup("Operator_Start", "tbl_ActiveOperators", Me.Operator = "Operator") Then
' MsgBox "HI"
' Me.Operator_Start.SetFocus
' Cancel = True
' End If
'End If
'If (Operator_Start > Operator_Start And Operator_Start < Operator_End) Then
' DLookup("Operator_Start", "tbl_ActiveOperators", Me.Operator = "Operator") Then
' MsgBox "HI"
' Me.Operator_Start.SetFocus
' Cancel = True
'End If
'If DCount("*", "tbl_ActiveOperators", "Operator_Start < Forms!frm_Job_Details.[Operator_End] And Operator_End > Forms!frm_Job_Details.[Operator_Start] And Operator = Forms!frm_Job_Details.[Operator] ") > 0 Then
' MsgBox "Error: Times overlap"
' Me.Operator_Start.SetFocus
' Cancel = True
'End If
If DCount("*", "[tbl_ActiveOperators]", "[Operator_Start] <= Forms!frm_Job_Details!Operator_End And [Operator_End] >= Forms!frm_Job_Details!Operator_Start And Not [Operator] Is Null ") > 0 Then
MsgBox "Error: Times overlap"
Me.Operator_Start.SetFocus
Cancel = True
End If
End Sub