Suposición:
La tabla de privilegios se llama 'privilegios' y tiene estos campos, por lo menos
Nombre tipo char
Habilitado tipo boolean
Usuario tipo char
Tendrías que usar los Tag de los componentes (es una propiedad en donde puedes poner cualquier valor o dejarlo en blanco). La utilización que yo le he dado es justamente esta. Defino un número con 0's a la izquierda. La primera parte es para la pantalla a la que se refiere (001, 002, 003) y los últimos 3 son para el número de componente (incluidas las opciones de menú). Con esto, tienes un tag, por ejemplo '015005'
Luego, en la tabla de privilegios, en el campo 'Nombre' pones estos Tags y habilitas en el segundo campo, para el usuario del tercer campo.
Así, lo único que tienes que recorrer son los componentes de la forma cada que la activas, de esta manera:
Dim con As Connection
Dim cmd As Command
Dim rst As Recordset
Dim i As Integer
con = New Connection
cmd = New Command
con.Open
cmd.ActiveConnection = con
cmd.CommandText = "select Nombre, Habilitado from privilegios where usuario = '" & Usuario & "'"
rst = cmd.Execute
rst.MoveFirst
While Not rst.EOF
For Each Control In Me.Controls
If Control.Tag = CStr(rst(0)) Then
Control.Visible = CBool(rst(1))
End If
Next Control
rst.MoveNext
Wend
Te doy el ejemplo general. Lo que hagas para hacerlo más exacto es implementación tuya.
Espero que te sirva.
Saludos.