Microsoft Access Checkbox Пароль - PullRequest
       27

Microsoft Access Checkbox Пароль

0 голосов
/ 17 января 2019

У меня есть форма с флажком, который требует пароль для галочки. Проблема в том, что после того, как событие завершено, и я щелкаю за пределами поля, оно все еще запрашивает пароль.

Обновление: событие завершается, просто потом, если я пытаюсь щелкнуть где-нибудь еще, оно снова срабатывает

Private Sub Signed_by_Mike_BeforeUpdate(Cancel As Integer)

If InputBox("You must provide the correct password to Lock or Unlock CheckBox!", "Password Input") <> "password" Then
 MsgBox "Wrong Password Entered. Operation aborted!", vbCritical
 Cancel = True


End If
End Sub

Я ожидал, что это событие произойдет только с флажком, но по какой-то причине оно произойдет, если я попытаюсь щелкнуть в любом месте формы после этого.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Хорошо, событие BeforeUpdate может быть сложной триггерной точкой, особенно при использовании ввода в окне сообщения. Если вам действительно нужно использовать этот подход, попробуйте включить его в событие AfterUpdate, а также попробуйте изменить свой синтаксис с: <> «пароль», вместо этого: «Не похоже на« пароль ». Также, если это тип непрерывной формы - это было бы осложнением.

но если вы все еще на стадии проектирования; Я предлагаю добавить небольшое текстовое поле без метки с маской пароля ****, расположенное чуть ниже флажка. Попросите пользователя ввести pw в это текстовое поле. Тогда ваш код в событии AfterUpdate флажка очень прост: Если me.checkbox = -1, то Если me.pw не нравится "pw", то msgbox "неправильный pw" me.checkbox = 0 конец, если конец если

0 голосов
/ 17 января 2019

Вы очень близки - вам не хватает механизма, чтобы заставить его «помнить», когда был предоставлен пароль - вы можете использовать для этого локальные Static («статические» локальные переменные сохраняют свое значение между вызовами процедур), или переменная уровня модуля:

Private Sub Signed_by_Mike_BeforeUpdate(Cancel As Integer)
    Static authorized As Boolean

    If Not authorized And InputBox("You must provide the correct password to Lock or Unlock CheckBox!", "Password Input") <> "password" Then
        MsgBox "Wrong Password Entered. Operation aborted!", vbCritical
        Cancel = False
    Else
        authorized = True    
    End If
End Sub

Не следует ли установить Cancel на True, если введен неправильный пароль?

...