Кнопка подтверждения защиты паролем в форме MS Access по-прежнему приводит к отправке кнопки - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь защитить паролем кнопку отправки в форме, которую я создаю в Microsoft Access 2003. При нажатии этой кнопки новая запись добавляется в мою базу данных. Идея защиты паролем заключается в том, что когда пользователь нажимает кнопку, появляется запрос с запросом пароля. Они могут либо ввести пароль и нажать «ОК», чтобы проверить правильность его ввода, либо нажать «Отмена» и закрыть окно с подсказкой (после чего они получат уведомление о подтверждении). Если пароль совпадает с жестко заданным, запись будет добавлена. Если пароль не совпадает, появится сообщение об ошибке.

Это должно быть достаточно просто. Тем не менее, запись ВСЕГДА будет добавлена ​​в базу данных, независимо от того, введен ли пароль неправильно, пароль не введен или пользователь отменяет действие из окна пароля. Что я делаю не так с кодом ниже?

Private Sub AddLeadServerButton_Click()
    Dim strPasswd

    strPasswd = InputBox("Enter Password", "Restricted Form")

    'Check to see if there is any entry made to input box, or if
    'cancel button is pressed. If no entry made then exit sub.

    If strPasswd = "" Or strPasswd = Empty Then
        MsgBox "No Input Provided", vbInformation, "Required Data"
        Exit Sub
    End If

    'If correct password is entered open Employees form
    'If incorrect password entered give message and exit sub

    If strPasswd = "thepassword" Then
        DoCmd.GoToRecord , , acNewRec
        Me.Parent!NewInstallation.Form!InstallationLeadServerComboBox.Requery
        Me.Parent!NewReport.Form!LeadServerFilterComboBox.Requery
    Else
        MsgBox "Sorry, you do not have access to this form", _
               vbOKOnly, "Important Information"
        Exit Sub
    End If
End Sub

Ответы [ 3 ]

1 голос
/ 13 ноября 2010

Чтобы выполнить желаемое поведение, вам нужно установить форму, чтобы предотвратить добавление новых записей. Затем попросите пользователя ввести пароль, верните форму, чтобы разрешить добавление новых записей, и перейдите к новой записи.

  1. Если лист недвижимости не в меню «Вид» выберите Свойства для отображения формы лист имущества.

  2. В окне свойств формы нажмите вкладка Данные, а затем установите AllowAdditions собственность до №

  3. Добавить командную кнопку к форма. Установить команду свойство кнопки OnClick для [Событие Процедура], а затем нажмите Построить кнопка справа от OnClick окно свойств. Введите следующее заявление в Form_Customers модуль:

    Forms!Customers.AllowAdditions = True
    

http://support.microsoft.com/kb/208586

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

1 голос
/ 12 ноября 2010

Подключите событие BeforeInsert в вашей форме и добавьте проверку пароля там.Вы можете установить Cancel=True, если они не предоставляют правильный пароль, и это приведет к тому, что добавление записи будет отменено.

Пример:

Private Sub Form_BeforeInsert(Cancel As Integer)
    If MsgBox("Insert new record here?", _
        vbOKCancel) = vbCancel Then
        Cancel = True
    End If
End Sub
0 голосов
/ 27 ноября 2011

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

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

Просто личное предпочтение, но я думаю, что несвязанные стоят времени и усилий.

...