Проверка времени доступа MS Access VBA - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь настроить проверку времени, чтобы предотвратить наложение в 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
...