Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Einzelne Datenbankobjekte vor fremdem Zugriff schützen

Das man eine Datenbank in eine .mde-Datenbank umwandeln kann, um dem Benutzer den Zugriff auf den Code in Formularen, Berichten und Modulen zu verweigern, ist bekannt. Wie aber kann man einzelne Objekte schützen? Ganz einfach: Man zieht sie aus der eigentlichen Anwendung in eine externe Datenbank heraus und verknüpft sie einfach.

Beispieldatenbank

Die Beispieldatenbank enthält ein Formular namens frmStart mit den nachfolgend beschriebenen Funktionen. Außerdem finden Sie im .zip-File die geschützte Datei Geschuetzt.mde.

Aussortieren und verknüpfen

Wenn Sie dem Benutzer nur Einblick in den VBA-Code bestimmter Objekte gewähren möchten, müssen Sie die übrigen Objekte schützen. Dazu gehen Sie folgendermaßen vor (vor dem Umwandeln des geschützten Teils der Datenbank müssen Sie das Original natürlich sichern!):

  1. Legen Sie eine neue Datenbank an.
  2. Importieren Sie die zu schützenden Objekte in die neue Datenbank. In der Beispieldatenbank Geschuetzt.mde sind das beispielsweise das Formular frmBeispiel und das Modul mdlBeispiel.
  3. Löschen Sie die Objekte aus der Ursprungsdatenbank.
  4. Weisen Sie dem VBa-Projekt der zu schützenden Datenbank einen aussagekräftigen Namen zu (beispielsweise 'Geschuetzt'). Das erledigen Sie im VBA-Editor (siehe Abbildung 1). 
  5. Wandeln Sie die zu schützende Datenbank in eine .mde-Datenbank um.
  6. Sorgen Sie dafür, dass die Objekte der geschützten Datenbank beim Öffnen der ursprünglichen Datenbank zur Verfügung gestellt werden.

Abbildung 1: Ändern des Namens eines VBA-Projekts einer Datenbank

Der sechste Punkt ist ein wenig aufwendiger. Um eine Verknüpfung zu einer anderen Datenbank herzustellen und deren Objekte damit zur Verfügung zu stellen, sind einige Zeilen VBA-Code notwendig. Die integrieren Sie am besten in ein Startup-Formular, dass Sie in den Startoptionen der Datenbank festlegen.

Das Startup-Formular muss keine Steuerelemente enthalten, es wird dem Anwender auch noch nicht einmal auffallen.

Damit es beim Start der Datenbank den Verweis auf die geschützte Datenbank und damit auf die darin enthaltenen Objekte herstellt, fügen Sie für die Ereigniseigenschaft Beim Laden den folgenden Code hinzu:

Private Sub Form_Load()

    Dim strDatenbankpfad As String

    strDatenbankpfad = Left(CurrentDb.Name, _

        Len(CurrentDb.Name) - _

        Len(Dir(CurrentDb.Name)))

    Access.References.AddFromFile _

        strDatenbankpfad & "Geschuetzt.mde"

    Me.Visible = False

End Sub

Die Prozedur ermitteln für die Stringvariable strDatenbankpfad den Pfad, in dem die aktuelle Datenbank gespeichert ist. Dort sollte sich optimalerweise auch die geschützte Datenbank befinden. Anschließend erstellt Sie eine Verknüpfung auf diese Datenbank.

Übrigens: Wenn Sie diese Prozedur aufrufen, ohne vorher den Namen des Code-Projekts der geschützten Datenbank geändert zu haben, würden Sie vermutlich einen Fehler erhalten, da alle Code-Projekte standardmäßig den gleichen, versionsabhängigen Namen wie etwa ACCESS9 erhalten.

Damit der Verweis beim Schließen der Datenbank wieder entfernt wird, fügen Sie der Ereigniseigenschaft Beim Entladen diese Prozedur hinzu:

Private Sub Form_Unload(Cancel As Integer)

    Dim ref As Access.Reference

    Set ref = Access.References("Geschuetzt")

    Access.References.Remove ref

End Sub

Hier wird auch deutlich, warum Sie dem Code-Projekt der geschützten Datenbank einen eindeutigen Namen zuweisen sollten: Über diesen Namen wird der zu entfernende Verweis benannt.

Wenn Sie die beiden Datenbanken wie beschrieben behandelt haben, können Sie beide schließen und die Datenbank mit dem Startformular wieder öffnen. Ohne viel Murren sollte nun die in der geschützten Datenbank enthaltene Funktion Beispiel aufrufen können (am Besten über das Testfenster).

Da die Datenbank Geschuetzt.mde auch tatsächlich geschützt ist, finden Sie hier den Code der Funktion Beispiel:

Public Function Beispiel()

    MsgBox "Diese Funktion ist geschützt."

End Function

Wie öffne ich geschützte Formulare und Berichte?

Die Formulare und Berichte in der geschützten Datenbank können Sie nicht direkt über das Datenbankfenster öffnen. Das passiert aber in professionellen Anwendungen ohnehin nie. Gehen Sie stattdessen einen kleinen Umweg: Legen Sie zum Öffnen von Formularen und Berichten je eine Funktion in einem Standardmodul in der geschützten Datenbank an. Diese könnte etwa folgendermaßen aussehen:

Public Function Beispielformular()

    DoCmd.OpenForm "frmBeispiel"

End Function

Wenn Sie diese Funktion im Testfenster aufrufen, erscheint das gewünschte Formular.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.