Moin. Ich bin Sönke Schäfer, der Datenschäfer. Wenn Du Anwendungen für KMUs entwickelst, kennst Du das: Nicht jeder darf alles sehen. Nicht jeder soll alles klicken. Und am Ende ruft jemand an und fragt, warum der „Admin“-Knopf nichts macht – obwohl er kein Admin ist.
Benutzerrechte sind mehr als „Darf rein oder nicht“. Es geht um Klarheit. Vertrauen. Und darum, dass das System sich benimmt wie erwartet. Also bauen wir eine saubere Logik. Für Rollen. Für Sichtbarkeit. Für Ruhe im Alltag.
Typische Anforderungen
- Menüpunkte je nach Rolle ausblenden
- Nur bestimmte Buttons oder Formulare sichtbar machen
- Datensätze nach Rolle filtern
- Aktionen absichern – auch gegen Direktzugriffe
Das klingt nach viel – ist aber überschaubar, wenn Du’s richtig aufziehst.
Basis: Benutzerrollen verwalten
Lege eine Tabelle tblBenutzer an mit z. B.:
Benutzername
Rolle
(z. B. Admin, Sachbearbeiter, Chef)
Optional: Zusatztabelle für granulare Rechte tblBenutzerRecht
mit Rechte-Flags.
Benutzer bei Login merken
Speichere den aktuellen Benutzer zentral. Zum Beispiel in einer globalen Variable oder in einem TempTable mit Laufzeitdaten.
Public aktiverBenutzer As String
Public benutzerrolle As String
Beim Login:
aktiverBenutzer = Environ("USERNAME")
benutzerrolle = DLookup("Rolle", "tblBenutzer", "Benutzername = '" & aktiverBenutzer & "'")
Menüs und Buttons ausblenden
Jetzt wird’s praktisch. Im Formular Form_Load()
prüfst Du die Rolle:
If benutzerrolle <> "Admin" Then
Me!btnBenutzerverwaltung.Visible = False
Me!mnuEinstellungen.Visible = False
End If
Das geht auch für Ribbon-Steuerelemente, wenn Du XML nutzt – oder Du bastelst Dir ein angepasstes Ribbon je Rolle.
Aktionen absichern
Nur ausblenden reicht nicht. Du musst Aktionen auch blockieren, wenn sie direkt angesteuert werden (z. B. per Tastenkombi oder URL).
If benutzerrolle <> "Admin" Then
MsgBox "Du hast keine Berechtigung dafür.", vbExclamation
Exit Sub
End If
Diese Prüfung gehört in jede Funktion, die sensibel ist. Besser einmal zu viel als gar nicht.
T-SQL für Rechte auf Datenebene
Du willst auf SQL Server nur „eigene“ Daten anzeigen? Dann nutze die Session oder einen Übergabeparameter:
SELECT * FROM dbo.Auftrag
WHERE Sachbearbeiter = SYSTEM_USER
Oder Du gibst den Benutzernamen per ADO beim Öffnen mit:
Set cmd = New ADODB.Command
cmd.CommandText = "EXEC dbo.GetSichtbareDaten @User = ?"
Vision statt Nachbessern
Wenn Du die Rechte sauber modellierst, bleibt das System stabil. Neue Rollen? Kein Problem. Neue Buttons? Einfach sichtbar machen – oder nicht. Das spart Support, Diskussionen und Fehlbedienung.
„Wer was sieht, muss auch was dürfen. Alles andere macht Stress.“
Fazit vom Datenschäfer
Benutzerrechte sind keine Nebensache. Sie sind das Gerüst für Vertrauen und Struktur. Wenn Du’s richtig machst, merkt der Nutzer gar nicht, wie viel Logik dahintersteckt – und genau das willst Du erreichen.
Wenn Du willst, helf ich Dir beim Aufbauen. So, dass es morgen noch wartbar ist. Und in einem Jahr auch noch passt.
Datenschäfer: Analyse, Auswertung und Automatisierung für KMU im Norden 🐑
Comments are closed