BeforeUpdate Access VBA в поле формы может вводить только число

У меня есть форма, в которой я хочу заполнить либо Актив, либо Местоположение, а также Супервайзер, или Ведущий, или Бригаду, или Рабочую группу, или Бригаду рабочей группы. У меня есть код, и он работает, но он позволяет мне вводить только числа в эти поля. Я хочу иметь возможность вводить цифры и буквы в эти поля.

 Private Sub Form_BeforeUpdate(Cancel As Integer)


 If IsNull(Form_frmAddPM.Asset Or Form_frmAddPM.Location) Then
    MsgBox "Please enter a value in an asset or location."
    Cancel = True
  End If


 If IsNull(Form_frmAddPM.Supervisor Or Form_frmAddPM.Lead Or 
    Form_frmAddPM.Crew Or Form_frmAddPM.Work_Group Or 
     Form_frmAddPM.Crew_Work_Group) Then
     MsgBox "Please enter value in Supervisor, Lead, Crew, Work Group, or 
     Crew 
        Work Group."
        Cancel = True

      End If

End Sub

Я пытался изменить целое число на разные типы. С кодом выше, когда я пытаюсь ввести буквы в форму, выскакивает ошибка типа несоответствия.

Спасибо заранее за вашу помощь.


person MFinck    schedule 21.09.2018    source источник


Ответы (1)


Вы используете побитовый оператор OR, который требует, чтобы оба значения, для которых вы его используете, были целыми числами (см. guide/language-features/operators-and-expressions/logical-and-bitwise-operators#bitwise-operations" rel="nofollow noreferrer">документы, VB.Net, но работает так же в VBA)

Вместо этого вы должны проверять каждое поле, если оно имеет значение null отдельно:

Private Sub Form_BeforeUpdate(Cancel As Integer)


 If IsNull(Form_frmAddPM.Asset) Or IsNull(Form_frmAddPM.Location) Then
    MsgBox "Please enter a value in an asset or location."
    Cancel = True
  End If


 If IsNull(Form_frmAddPM.Supervisor) Or IsNull(Form_frmAddPM.Lead) Or 
    IsNull(Form_frmAddPM.Crew) Or IsNull(Form_frmAddPM.Work_Group) Or 
     IsNull(Form_frmAddPM.Crew_Work_Group) Then
     MsgBox "Please enter value in Supervisor, Lead, Crew, Work Group, or 
     Crew 
        Work Group."
        Cancel = True

      End If

End Sub
person Erik A    schedule 21.09.2018