2017-01-18 8 views
0

Ich versuche, eines meiner Formulare mit einem Kennwort zu schützen, aber beim Starten des Formulars wird ein Fehler angezeigt. HierKennwort, das ein Formular schützt

ist der Fehler, den ich erhalten:

Der Ausdruck auf Öffnen Sie als die Ereigniseinstellung von Eigenschaft den folgenden Fehler erzeugte: Prozedur-Deklaration nicht viel Beschreibung des Ereignisses oder Prozedur mit dem gleichen Namen.

Hier ist mein Code:

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

Ich fand heraus, wie man es schützen kann, aber ich nehme an, dass dies den Benutzer nicht daran hindert, den VB-Code tatsächlich zu bearbeiten. – KKP

+0

Anstatt ein Kennwort im VBA-Code fest zu codieren, können Sie Active Directory abfragen und feststellen, ob der aktuelle authentifizierte Benutzer (Sie befinden sich in einem Netzwerk?) In einer Benutzergruppe ist, die ihm Zugriff auf die Funktionalität gewährt. Auf diese Weise wird zumindest nirgends ein Passwort im Klartext angezeigt ... aber Ihr Benutzer kann die Ausführung jederzeit unterbrechen und die Prozedur überspringen. Passwort-Schutz der VBA-Code selbst würde das lindern, aber es ist nicht unmöglich, entweder zu knacken. –

+0

Wenn das Abfragen von AD zu umständlich ist, testen Sie einfach, ob der Benutzer auf einen Ordner zugreifen kann, der von AD gesteuert wird, als * Proxy * für die Abfrage von AD. – ThunderFrame

Antwort

1

Ihre Form_Open Erklärung falsch ist, spielt es keine Parameter enthalten. Sollte so sein:

Private Sub Form_Open(Cancel As Integer) 
Verwandte Themen