Beitrag aus SmartTools Access Weekly
Memofeld dynamisch sperren
Access 365 2021 2019 2016 2013 2010
FRAGE Wir arbeiten im Team mit einer gemeinsam genutzten Access-Datenbank im Netzwerk. In einem bestimmten Formuar möchte ich möchte die Bearbeitung eines Memofeldes ausschließlich für mich und meine Kollegin zulassen. Für alle anderen Mitarbeiter soll der Inhalt nur sichtbar und die Bearbeitung zuverlässig gesperrt sein. Haben Sie einen Tipp, wie ich das mkt möglichst wenig Aufwand erreichen kann?
Diverse Anfragen
ANTWORT Zunächst einmal muss unterschieden werden können, wer gerade mit der Datenbank arbeitet. Dazu eignet sich zum Beispiel der Windows-Anmeldename, der sich mit einer API-Funktion ermitteln lässt. Kopieren Sie zunächst die folgende Deklaration und die Funktion "NetUserName()" in ein neues oder vorhandenes Modul:
Declare Function GetUserName _
Lib "advapi32.dll" _
Alias "GetUserNameA" ( _
ByVal lpBuffer As String, nSize As Long) _
As Long
Function NetUserName() As String
Dim Buffer As String, lngLen As Long
lngLen = 255
Buffer = String(lngLen, 0)
If GetUserName(Buffer, lngLen) Then
NetUserName = Trim$(Left(Buffer, lngLen))
Else
NetUserName = "???"
End If
End Function
In der Ereignisprozedur "Beim Laden" des Formulars geben Sie folgende Anweisung ein:
Me.Memofeld.Locked = _
(NetUserName<> "Name1" And _
NetUserName() <> "Name2")
"Memofeld" ersetzen Sie durch den Namen des Memofeldes in Ihrem Formular und "Name1" bzw. "Name2" durch die gewünschten Anmeldedaten. Diese Anweisung sorgt dafür, dass die Eigenschaft "Locked" des Memofeldes auf "True" eingestellt wird, wenn der aktuelle Anwender nicht den angegebenen Namen entspricht. Dadurch kann der Inhalt des Memofeldes noch eingesehen, aber nicht mehr geändert werden.