Tipp 4.5 - Hat User Kennwort

Wie kann ich überprüfen, ob für einen Benutzer innerhalb der Datenbank ein Kennwort hinterlegt ist?

Mit dieser Funktion können Sie überprüfen, ob für einen Benutzer innerhalb der Datenbank ein Kennwort hinterlegt ist. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

ab Access 2000Hinweis: Durch spezielle Anweisungen können Sie diese Funktion erst ab Access 2000 einsetzen.

Beispiel:

Public Function A2XUserHasPassword(psWrk As String, _
                                   psUser As String) _
                                   As Boolean
  '// =====================================================
  '// Methode   | Überprüft, ob ein Kennwort gesetzt ist
  '// -----------------------------------------------------
  '// Parameter | psWrk  - Name des Workspace oder Leer-
  '                        string für den aktuellen
  '               psUser - Name des Benutzers
  '// -----------------------------------------------------
  '// Rückgabe  | Boolean - Wahr/Falsch
  '// -----------------------------------------------------
  '// Erstellt  | Manuela Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf:
  '// ?A2XUserHasPassword(vbNullString, CStr(CurrentUser))
  '// =====================================================
 
  Dim wrk As DAO.Workspace
  Dim usr As User
  Dim lSaveErr As Long
  Dim bPassword As Boolean
 
  On Error GoTo A2XUserHasPassword_Error
 
  ' Initialisieren
  bPassword = False
 
  ' Workspace setzen
  If psWrk = "" Then
    Set wrk = DAO.DBEngine.Workspaces(0)
  Else
    Set wrk = DAO.DBEngine.Workspaces(psWrk)
  End If
 
  Set usr = wrk.Users(psUser)
 
  ' Error-Handling ausschalten
  On Error Resume Next
 
  ' Versuch, ein leeres Kennwort zu setzen
  usr.NewPassword "", ""
  lSaveErr = Err.Number
  On Error GoTo A2XUserHasPassword_Error
 
  ' Err-Nummer überprüfen
  Select Case lSaveErr
  Case 0
    ' kein Fehler, also hat der User kein Kennwort
    bPassword = False
 
  Case 3033:
    ' Da falsches Altkennwort übergeben, User hat Kennwort
    bPassword = True
 
  Case Else
    ' bei allen weiteren Fehlern, wird wohl sehr wahr-
    ' scheinlich kein Kennwort gesetzt sein
    bPassword = False
 
  End Select
 
A2XUserHasPassword_Exit:
  On Error GoTo 0
  Exit Function
 
A2XUserHasPassword_Error:
  Select Case Err.Number
  Case Else
    MsgBox "Fehler " & Err.Number & ": " & _
           Err.Description, vbCritical, _
           "modSecure.A2XUserHasPassword"
  End Select
  Resume A2XUserHasPassword_Exit
 
 
End Function