Unsere Webseiten benötigen JavaScript. Dies scheint in Ihrem Browser jedoch deaktiviert zu sein.

News & Tipps zu Microsoft Access

Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.

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.