8. Czy bieżący użytkownik może 'na chwilę' dostać większe uprawnienia?

Tak, może. Oczywiście nie on sam sobie te większe uprawnienia nadaje, tylko programista musi przewidzieć taką sytuację i obsłużyć ją w programie. Wprawdzie to raczej dość rozpaczliwe działanie, ale w pewnych sytuacjach taki trik może okazać się przydatny. Np. kiedy zależy nam na tym, żeby do pewnych obiektów użytkownik miał dostęp wyłącznie poziomu z naszego kodu, a nie z okna bazy danych.
 
Poniżej umieściłem procedurę, która nadaje pełne uprawnienia bieżącemu użytkownikowi bez uprawnień. Cala sztuczka-magiczka polega na tym, aby utworzyć odpowiedni obiekt Workspace. Przecież to nie user bez praw ma sobie nadać uprawnienia, tylko programista udostępnia mu je, kiedy potrzeba. W tym celu trzeba mieć oczywiście jakieś swoje konto z pełnymi uprawnieniami do bazy i to wystarczy oraz taka przykładowa procedurka.
Sub ChwilowyFullAccess
Dim dbs As Database, wrk As Workspace
Dim ctrTables As Container, ctrTable As Document
    Set wrk = DBEngine.CreateWorkspace("", "TwojeKonto", _
	"TwojeTajneHaslo", dbUseJet)
    Set dbs = wrk.OpenDatabase(CurrentDb.Name)
    Set ctrTables = dbs.Containers!Tables
    Set ctrTable = ctrTables.Documents("Tabela1")
    ctrTable.UserName = CurrentUser
    ctrTable.Permissions = dbSecFullAccess
    'Teraz bieżący użytkownik ma pełne prawa do tabeli Tabela1
    ctrTable.Permissions = dbSecNoAccess
    'A teraz znów nie ma praw
End Sub

K. P.