Wenn Datenbanken von mehreren Mitarbeitern eingesetzt werden, kommt es immer wieder zu unbeabsichtigten oder unbefugten Änderungen in einzelnen Feldern. Sie können diese Felder zwar über die Eigenschaften „Aktiviert = Nein“ und „Gesperrt = Ja“ schützen, aber dann lässt sich der Inhalt generell nicht mehr ändern.
Sie können dieses Problem aber recht einfach lösen, indem Sie für die zu schützen den Felder die Bearbeitung erst nach Abfrage eines Kennwortes erlauben. Das Kennwort erhalten dann nur ausgewählte Mitarbeiter, die zu Änderungen berechtigt sind.
Um ein Feld (Textfeld oder Kombinationsfeld) in einem Formular für diesen Schutz einzurichten, gehen Sie wie folgt vor:
- Öffnen Sie das Formular im Entwurfsmodus.
- Legen Sie neben dem zu schützenden Textfeld eine Schaltfläche mit den folgenden Eigenschaften an:Name: btnUnprotect
Bild: Sperre(Blau)
Breite: 0,6 cm
Höhe: 0,6 cmWenn Sie mehrere Felder in einem Formular schützen möchten, benennen Sie die Schaltflächen „btnUnprotectFirma“, „btnUnprotectGehalt“ oder ähnlich, nehmen Sie also die jeweilige Feldbezeichnung zur besseren Unterscheidung in den Namen auf.
- Stellen Sie die Eigenschaft „Beim Klicken“ der Schaltfläche auf den Eintrag „[Ereignisprozedur]“ und klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen.
-
Im VBA-Editor geben Sie folgende Anweisungen ein:
Private Sub btnUnprotect_Click()
Dim strPW As String
Const cstrPW = „geheim“
strPW = InputBox$(„Bitte das Kennwort zur Bearbeitung
eingeben:“, _
„Kennwort erforderlich“, „“)
If strPW <> cstrPW Then
Beep
MsgBox „Ungültiges Kennwort!“, _
vbOKOnly + vbExclamation, „Kennworteingabe“
Exit Sub
End If
With Me.Firma
.Enabled = True
.Locked = False
.SetFocus
End With
End SubDen Feldnamen „Firma“ ersetzen Sie dabei durch den Namen des zu schützenden Feldes. Für die Konstante „cstrPW“ geben Sie das Kennwort ein, das später zur Freischaltung des Feldes benötigt wird. Verlassen Sie anschließend den VBA-Editor wieder.
- Markieren Sie das zu schützende Textfeld und stellen Sie die Eigenschaften „Aktiviert“ auf „Nein“ und „Gesperrt“ auf „Ja“.
- Stellen Sie die Eigenschaft „Bei Fokusverlust“ des Textfeldes auf den Eintrag „[Ereignisprozedur]“ und klicken Sie auf die Schaltfläche mit den drei Punkten.
- Geben Sie im VBA-Editor die folgenden Anweisungen ein:Me.btnUnprotect.SetFocus
Me.Firma.Enabled = False
Me.Firma.Locked = True
Den Feldnamen „Firma“ ersetzen Sie dabei wieder durch den Namen des zu schützenden Feldes. Verlassen Sie anschließend den VBA-Editor.
Wenn Sie das Formular nun anzeigen lassen, ist das geschützte Feld nicht aktivierbar und kann somit auch nicht geändert werden.
Ein Klick auf die Schaltfläche hinter dem Feld zeigt einen Dialog zur Eingabe eines Kennwortes an.
Ist das Kennwort nicht korrekt, wird eine entsprechende Meldung „Ungültiges Kennwort“ angezeigt und das Feld bleibt gesperrt. Andernfalls werden die Eigenschaften „Enabled“ (Aktiviert) und „Locked“ (Gesperrt) zurückgesetzt. „Set Focus“ aktiviert das Feld schließlich für die Änderung oder Eingabe.
Bei einem Feld- oder Datensatzwechsel verliert das Feld den Fokus, sodass die Ereignisprozedur „Bei Fokusverlust“ ausgeführt und das Feld wieder geschützt wird. Damit ein Steuerelement deaktiviert werden kann, darf es nicht den Fokus haben, sonst zeigt Access einen Laufzeitfehler an. Deshalb wird der Fokus kurzerhand auf die Schaltfläche „btnUnprotect“ gesetzt.
Ereignisprozedur | Eintrag | Bedeutung |
Beim Klicken (Schaltfläche) |
=UnprotectField ([Feldname]) |
Fragt das Kennwort für das Feld „Feldname“ gemäß Eigenschaft „Tag“ ab und schaltet es gegebenenfalls frei. |
Bei Fokusverlust (Feld) |
=ProtectField ([Feldname];[Aktivieren]) |
Schützt das Feld „Feldname“ wieder, wenn es den Fokus verliert. Der zweite Parameter spezifiziert das zu aktivierende Steuer element (z. B. das nächste Feld in der Aktivierreihenfolge oder eine Schaltfläche), damit eine Fehlermeldung unterbunden wird. |
Anschließend kann das Feld problemlos über die Eigenschaften „Enabled“ und „Locked“ geschützt werden. Wenn Sie mehrere Felder in einem Formular auf die gezeigte Art schützen möchten, nutzen Sie zur Vereinfachung das von uns vorbereitete Modul „modProtect“, das Sie in der Beispieldatenbank finden und zunächst in Ihre Datenbank übertragen. Es enthält die Funktionen „UnprotectField()“ und „Protect Field()“, die die eben erläuterten Funktionalitätenparameter gesteuert bereitstellen und sich einfach über Eintragungen in den Eigenschaften „Beim Klicken“ der Schaltfläche bzw. „Bei Fokusverlust“ des Feldes aufrufen lassen. Sie sparen so die Eingabe der eben gezeigten Prozeduren für jedes zu schützende Feld. Um den Aufruf möglichst einfach zu halten, wird das Kennwort bei dieser Lösung in der Eigenschaft „Tag“ des jeweiligen Feldes hinterlegt und dort von der Funktion „UnprotectField()“ für die Abfrage ausgelesen. Die Einzelheiten zum Aufruf der Funktionen entnehmen Sie bitte der Tabelle auf dieser Seite.