To accomplish this, you need to set up the DB so that your users NEVER see the infrastructure i.e. the ribbon and object navigation panel. You need to have a table of usernames and then associate the usernames to specific roles.
The payoff is that if you have that, then on the relevant form, in that form's OnLoad event, you could put code that set .Locked=True or .Locked=False based on the user's role. e.g. in the form's class module:
Private Sub Form_Load()
Dim UName as String
Dim URole as Long
UName = Environ("Username")
URole = DLookup( "[UserRole]", "usertable", "[UserRole]='" & UName & "')
IF URole = 1 Then
[Assigned_To].Locked = FALSE
[Project_Cost].Locked = FALSE
[Assigned_To].Locked = TRUE
[Project_Cost].Locked = TRUE
You can embellish this, but the assumption is that admin role code is 1 and the normal user role code is something else (including 0 and not defined). So you look up the user's role and if it is 1, unlock things. If not, lock them.
You can search this forum for "Securing a database" to see the kinds of things you need to do to prevent your users from getting into the innards of the DB. If you don't do this, you CANNOT protect those data items.