FAQ MS-Access

FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
Sommaire→VBA→Utilisateurs- Comment connaître le nom de l'utilisateur connecté ?
- Comment connaître le nom de l'utilisateur courant ?
- Comment obtenir le nom de l'utilisateur de Windows ?
- Comment utiliser une variable Type utilisateur ?
- Comment savoir si la personne connectée est administrateur ou non ?
- Comment récupérer le nom d'un utilisateur Novel ?
- Comment permettre à l'utilisateur de changer son mot de passe ?
La propriété CurrentUser de l'objet Access.Application retourne le nom de l'utilisateur de la base de données.
Exemple :
Msgbox Application.CurrentUserLien : Comment gérer la sécurité - niveau utilisateur ?
Lien : Comment connaître le nom de l'utilisateur courant ?
Lien : Comment récupérer le nom d'un utilisateur Novel ?
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function fOSUserName() As String
' Retourne le nom d'usager fourni lors du branchement au réseau.
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If lngX <> 0 Then
fOSUserName = left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End FunctionLien : Comment obtenir le nom de l'utilisateur de Windows ?
Lien : Comment connaître le nom de l'utilisateur connecté ?
Lien : Comment récupérer le nom d'un utilisateur Novel ?
Environ("UserName")Lien : Comment connaître le nom de l'utilisateur courant ?
Lien : Comment récupérer le nom d'un utilisateur Novel ?
On définit le type :
Type Patient
dtmdrc As Date ' Date création
strIPP As String ' Numéro d'IPP
strNom As String ' Nom
strNjf As String ' Nom de jeune fille
strPre As String ' Prénom
dtmDdn As Date ' Date de naissance
strGro As String ' Groupe sanguin
strRhe As String ' Rhésus
strAdr As String ' Adresse
strCpo As String ' Code postal
strVil As String ' Ville
strTel As String ' Téléphone
lngCjt As Long ' Numéro de conjoint attaché à la fiche administrative
End TypeDans le code on déclare la variable :
Dim udtPatient As Patientet on utilise :
udtPatient.dtmdrc = #12/10/1968#
udtPatient.strIPP = "021584"
udtPatient.strNom = "LA GAFFE"
udtPatient.strNjf = ""
udtPatient.strPre = "Gaston"Pour faire ça il faut faire appel au groupe Administrateur en tant que groupe d'appartenance de l'utilisateur par :
DBEngine.Workspaces(0).Users(strUser).Groups("admins").NameSi pas d'erreur l'utilisateur appartient au groupe administrateur. Si Err.Number = 3265 élément non trouvé dans cette collection, l'utilisateur n'est pas administrateur.
Exemple :
Dim esp As Workspace
Dim strUser As String
On Error Resume Next
strUser = Application.CurrentUser
Set esp = DBEngine.Workspaces(0)
' L'instruction suivante provoque ou non une erreur
strUser = esp.Users(strUser).Groups("admins").Name
If Err.Number = 3265 Then
' Élément non trouvé dans cette collection, l'utilisateur n'est pas administrateur
ElseIf Err.Number > 0 Then
' Autre erreur
ElseIf Err.Number = 0 Then
' L'utilisateur appartient au groupe 'administrateur'
End IfNormalement, un UserName sous Novell est loggé avec son nom de Login Windows. Il faut donc utiliser l'API GetUserName :
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As LongPrivate Function fGetUserName() As String
Dim strUserName As String
strUserName = String(100, vbNullChar)
GetUserName strUserName, 100
strUserName = Left$(strUserName, InStr(strUserName, vbNullChar) - 1)
fGetUserName = strUserName
End FunctionUtilisez le code VBA suivant :
With DBEngine.Workspaces(0)
.Users(.UserName).NewPassword "ancienmotdepasse", "nouveaumotdepasse"
End With
Voici un exemple complet d'utilisation dans un formulaire :
- quatre zones de texte indépendantes : une pour récupérer l'utilisateur courant, une pour l'ancien mot de passe et deux pour le nouveau mot de passe (choix + confirmation) ;
- deux boutons : Valider et Annuler.
Private Sub CmdAnnuler_Click()
On Error GoTo err
DoCmd.Close
err:
Select Case err
Case 0
Case Else
MsgBox err.Description & vbLf & err.Source
End Select
End Sub
Private Sub CmdValider_Click()
On Error GoTo err
If Me.OldPwd = Me.NewPwd Then
MsgBox "Le nouveau mot de passe est identique à l'ancien." & vbLf & _
"Veuillez choisir un autre mot de passe.", vbOKOnly + vbExclamation, "Nouveau mot de passe invalide"
Me.NewPwd = ""
Me.ConfNewPwd = ""
DoCmd.GoToControl Me.NewPwd
Else
If Me.NewPwd <> Me.ConfNewPwd Then
MsgBox "Le mot de passe entré en confirmation" & vbLf & _
"ne correspond pas au nouveau mot de passe.", vbOKOnly + vbExclamation, "Erreur de confirmation"
Me.NewPwd = ""
Me.ConfNewPwd = ""
DoCmd.GoToControl Me.NewPwd
Else
With DBEngine.Workspaces(0)
.Users(.UserName).NewPassword Me.OldPwd, Me.NewPwd
End With
MsgBox "Le mot de passe a été changé.", vbOKOnly + vbInformation, "Confirmation"
DoCmd.Close
End If
End If
err:
Select Case err
Case 3033
MsgBox "L'ancien mot de passe saisi n'est pas valide.", vbOKOnly + vbExclamation, "Ancien mot de passe incorrect"
Me.OldPwd = ""
Me.NewPwd = ""
Me.ConfNewPwd = ""
DoCmd.GoToControl ("OldPwd")
Case 0
Case Else
MsgBox err.Description & vbLf & err.Source
End Select
End Sub
Private Sub Form_Load()
On Error GoTo err
Me.UtilCourant = "Utilisateur courant : " & DBEngine.Workspaces(0).UserName
err:
Select Case err
Case 0
Case Else
MsgBox err.Description & vbLf & err.Source
End Select
End SubVoici ce que cela donne :



