Tipps "n" Tricks
Anwender-Software - Access

Last Update: 24. Dezember 2001/Webmaster

Einfacher Passwortschutz für Formulare

Thema:

Access 97, 2000 und 2002
Problem: Um eine Datenbank gegen unbefugte Zugriffe zu schützen, bietet Access bekanntlich sehr weitgehende Möglichkeiten mit Benutzergruppen und Zugriffsrechten eingesetzt werden. Der Einrichtungsaufwand lohnt sich aber nicht, wenn nur ein einzelnes Formular zu schützen ist. Gibt es eine einfachere Methode?
Lösung: Es bietet sich an, in so einem Fall einen einfachen Zugriffsschutz einzurichten, der beim Laden des Formulars die Eingabe eines Passwortes verlangt. Die folgende Lösung ist sicherlich kein Hindernis für den Access-Profi, für den "normalen" Anwender reicht sie aber allemal aus:
  • Legen Sie eine neue Tabelle an, die lediglich ein Feld "Passwort" vom Datentyp "Text" beinhaltet und sichern Sie diese Tabelle unter dem Namen "USysPasswort". Alle Tabellen, die mit "USys" beginnen, werden von Access im Datenbank-Fenster nicht angezeigt. Das ist also die erste Hürde, die ein "Hacker" zu überwinden hätte.
  • Damit Sie zunächst das Passwort im ersten (und einzigen Datensatz) eingeben können, wählen Sie das Menü Extras-Optionen an, wechseln auf die Registerkarte "Ansicht" und aktivieren Sie die Option Systemobjekte im Bereich "Einblenden".
  • Öffnen Sie die Tabelle "USysPasswort" per Doppelklick im Datenbank-Fenster, geben Sie das gewünschte Passwort ein und schliessen Sie die Tabelle wieder. Machen Sie anschliessend die Anzeige der Systemobjekte wieder rückgängig.
  • Öffnen Sie das zu schützende Formular im Entwurfsmodus und wählen Sie das Menü Ansicht-Eigenschaften an.
  • Stellen Sie die Eigenschaft "Beim Laden" auf den Eintrag "[Ereignisprozedur]" ein und klicken Sie auf die kleine Schaltfläche mit den drei kleinen Punkten. Im VBA-Editor geben Sie folgende Anweisungen ein:

Sub Form_Load ()
  Dim strPW As String
  Dim varPW As Variant

  On Error Resume Next
  varPW = DLookup("[Passwort]", "USysPasswort")
  If Err <> 0 Then
    Beep
    MsgBox "Fehler in Passwortabfrage! " & _
    "- bitte Admin verständigen!"
    DoCmd.Close
    Exit Sub
  End If
  strPW = InputBox$("Bitte Passwort eingeben:", _
  "Nur für Administratoren!", "")
  If strPW = "" Or strPW <> varPW Then DoCmd.Close

End Sub

  • Das wäre dann die zweite Hürde, die ein "Hacker" zu nehmen hätte. Selbst wenn jemand das Formular im Entwurfsmodus öffnet, muß er wissen, wo genau die Abfrage erfolgt und muß zudem entsprechende VBA-Kenntnisse haben, um diese Abfrage außer Kraft zu setzen.
  • Speichern Sie das Formular und lassen rufen Sie es auf, um die Lösung zu testen.

 

Tipps "n" Tricks
Anwender-Software - Access