Mi permetto, da autodidatta, di proporre due soluzioni, una “light”, l’altra più “professionale”; ma funzionano entrambe.
Queste procedure hanno un senso solo se si sono preventivamente definiti accessi a più Account ai quali sono state attribuiti privilegi differenziati nell’utilizzo di maschere, query, report.
Per la versione light, io ho risolto in questo modo:
per ogni pulsante che desidero attivare solo tramite password, ho creato una routine su “Evento- Su attivato”:
Private Sub Tasto_GotFocus() ‘ Tasto indica il “Nome elemento” attribuito al tasto
If CurrentUser <> ACC1 _ ‘ ACC1 e ACC2 sono autorizzati alla modifica, gli altri Utenti no
And CurrentUser <> ACC2 _
Then
[campo successivo].SetFocus ‘ Indicare il campo in cui si desidera collocare il cursore
End If
End Sub
___ … ___
Versione più strutturata:
1. ho creato un modulo in VBA, nel quale vengono dichiarate le costanti e le variabili utilizzate nelle routine successive e una routine dove viene definito il messaggio che si desidera far comparire nel caso in cui un Utente cerchi di modificare il valore di un campo, senza esserne autorizzato.
Option Compare Database
‘ Elenco di tutti gli Account ai quali concedere l’accesso alle modifiche
Public Const ACC1 As String = "Admin" ‘ Account autorizzato alla modifica
Public Const ACC2 As String = "pg" ‘ Account autorizzato alla modifica
Public Const ACC3 As String = "Administretor" ‘ Account autorizzato alla modifica
Public Const ACCn As String = "…" ‘ Account autorizzati alla modifica
Public Msg as string, Style, Title as String
Public Response, Style
2. routine per definire il messaggio che compare quando si cerca di modificare un campo, senza autorizzazione.
Sub Messaggio_Account()
Title = "Account" ' Definisce il titolo.
Msg = "L'Utente " & CurrentUser & " non è autorizzato a questo tipo di modifica;" & vbCr _
& " contattare l'Amministratore di sistema." ' Definisce il messaggio.
Style = vbOKOnly + vbCritical
Response = MsgBox(Msg, Style, Title)
End Sub
3. per ogni pulsante che desidero attivare solo tramite password, ho creato una routine su “Evento- Su attivato”:
Private Sub Tasto_GotFocus() ‘ Tasto indica il “Nome elemento” attribuito al tasto
If CurrentUser <> ACC1 _ ‘ ACC1 e ACC2 sono autorizzati alla modifica, ACC3 e ACCn no
And CurrentUser <> ACC2 _
Then
Messaggio_Account ‘ Attiva il messaggio di errore
[campo successivo].SetFocus ‘ Indicare il campo in cui si desidera collocare il cursore
End If
End Sub
Spero di essere stato abbastanza esaustivo.
Cordiali saluti e buon lavoro.
A disposizione.
Giuseppe Guernieri