2017-01-18 3 views
0

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

Здесь ошибка я получаю:

Выражение Open вы ввели в качестве настройки свойств событий производится следующее сообщение об ошибке: Процедура декларации не столько описание события или процедуры с тем же именем.

Вот мой код:

Option Compare Database 

    Public Sub Form_Open() 
Cancel = (InputBox("Password?") <> "Cen") 

End Sub 

Private Sub cmdImport_Click() 

On Error GoTo Click_Err 
    If Nz(txtReportDate, "") = "" Then 
     MsgBox "NOTICE! Please enter the Report Month you wish to Import." 

     Else 

    ' Dim rs As Recordset 
    'Dim sql As String 

    'Loop through recordset of all Contracts and import files 
    ' sql = "SELECT DISTINCT FROM AAABBC_CE" 
    ' Set rs = CurrentDb.OpenRecordset(sql) 
    ' rs.MoveLast 
    ' rs.MoveFirst 
    ' If rs.RecordCount > 0 Then 
     ' Do While rs.EOF = False 
      ' ImportFile rs!DISTINCT 
      ' rs.MoveNext 
     ' Loop 
    ' End If 

    DoCmd.Hourglass True 
    DoCmd.SetWarnings False 

    DoCmd.Hourglass False 
    DoCmd.SetWarnings True 
    MsgBox "Finished Importing!" 
    DoCmd.OpenQuery "query_Files_Loaded_CE", acViewNormal, acReadOnly 

click_Exit: 
    DoCmd.Hourglass False 
    DoCmd.SetWarnings True 
    Exit Sub 

Click_Err: 
    DoCmd.Hourglass False 
    MsgBox "Error Detected: " & Err.Number & " - " & Err.Description, vbCritical, "Error" 
    Resume click_Exit 

     Exit Sub 
+0

Я выяснил, как защитить его, но я предполагаю, что это не останавливает пользователя от фактического редактирования кода VB. – KKP

+0

Вместо того, чтобы жестко кодировать пароль в коде VBA, вы можете запросить Active Directory и определить, находится ли текущий аутентифицированный пользователь (вы в сети, правда?) В группе пользователей, которая предоставляет ему доступ к функциям. Таким образом, по крайней мере, ни один пароль не появляется в обычном тексте в любом месте ... но ваш пользователь может всегда прерывать выполнение и пропустить процедуру. Пароль, защищающий сам код VBA, облегчил бы это, но это тоже невозможно взломать. –

+0

Если запрос AD слишком громоздкий, просто проверьте, может ли пользователь получить доступ к папке, контролируемой с помощью AD, в качестве * прокси * для запроса AD. – ThunderFrame

ответ

1

Ваше Form_Open декларация неправильна, она не содержит параметр. Должно быть так:

Private Sub Form_Open(Cancel As Integer) 
Смежные вопросы