| auteur : |
Pour modifier le mot de passe d'un utilisateur il faut appeler la méthode
NewPassword de l'objet User correspondant.
Important : Pour que ce code fonctionne vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub ChangerMotPasseUtilisateurDAO(strNomUtilisateur As String, _
strAncienMotPasse As String, strNouveauMotPasse As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Dim strMessageErreur As String
Set oWs = DBEngine.Workspaces(0)
Set oUsr = oWs.Users(strNomUtilisateur)
oUsr.NewPassword strAncienMotPasse, strNouveauMotPasse
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessageErreur = "Cet utilisateur n'existe pas"
Case Else
strMessageErreur = "Mot de passe incorrect"
End Select
MsgBox strMessageErreur, vbCritical, "Erreur"
Resume fin
End Sub |
Exemple d'utilisation :
ChangerMotPasseUtilisateurDAO "Utilisateur_toto", "ancien", "nouveau" |
|
| auteur : |
Pour modifier le mot de passe de l'utilisateur courant il faut appeler la méthode
NewPassword de l'objet User correspondant.
Deux possiblités :
- Utiliser la méthode permettant de changer le mot de passe de n'importe quel utilisateur en lui passant comme paramètre le nom de l'utilisateur courant
- Tout réécrire
Important : Pour que ces codes fonctionnent, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Possibilité 1 :
Public Sub ChangerMotPasseUtilisateurDAO(strNomUtilisateur As String, _
strAncienMotPasse As String, strNouveauMotPasse As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Dim strMessageErreur As String
Set oWs = DBEngine.Workspaces(0)
Set oUsr = oWs.Users(strNomUtilisateur)
oUsr.NewPassword strAncienMotPasse, strNouveauMotPasse
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessageErreur = "Cet utilisateur n'existe pas"
Case Else
strMessageErreur = "Mot de passe incorrect"
End Select
MsgBox strMessageErreur, vbCritical, "Erreur"
Resume fin
End Sub
Public Sub ChangerMotPasseUtilisateurCourantDAO _
(strAncienMotPasse As String, strNouveauMotPasse As String)
ChangerMotPasseUtilisateurDAO DBEngine.Workspaces(0).UserName, _
strAncienMotPasse, strNouveauMotPasse
End Sub |
Possibilité 2 :
Public Sub ChangerMotPasseUtilisateurCourantDAO(strAncienMotPasse As String, _
strNouveauMotPasse As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Dim strMessageErreur As String
Set oWs = DBEngine.Workspaces(0)
With oWs
Set oUsr = .Users(.UserName)
End With
oUsr.NewPassword strAncienMotPasse, strNouveauMotPasse
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessageErreur = "Cet utilisateur n'existe pas"
Case Else
strMessageErreur = "Mot de passe incorrect"
End Select
MsgBox strMessageErreur, vbCritical, "Erreur"
Resume fin
End Sub |
Dans tous les cas, l'utilisation se fera ainsi :
ChangerMotPasseUtilisateurCourantDAO "ancien", "nouveau" |
L'avantage de la première méthode est d'être plus générique et de permettre de modifier le mot de passe
d'autres utilisateurs, toutefois, si vous n'avez pas ce besoin, la seconde sera suffisante.
|
| auteur : |
Pour compter le nombre d'utilisateurs au total, il suffit d'appeler la propriété
Count de la collection Users de l'objet Workspace.
Par exemple :
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Msgbox DBEngine.Workspaces(0).Users.Count |
|
| auteur : |
Pour compter le nombre d'utilisateurs dans un groupe, il suffit d'appeler la
propriété Count de sa collection Users.
Par exemple :
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function NombreUtilisateursDansGroupeDAO _
(strNomGroupe As String) As Integer
On Error GoTo err
Dim oWs As DAO.Workspace
Set oWs = DBEngine.Workspaces(0)
NombreUtilisateursDansGroupeDAO = _
oWs.Groups(strNomGroupe).Users.Count
err:
End Function |
Exemple d'utilisation :
MsgBox NombreUtilisateursDansGroupeDAO("Admins") |
|
| auteur : |
Pour compter le nombre de groupes au total, il suffit d'appeler la propriété
Count de la collection Groups de l'objet Workspace.
Par exemple :
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Msgbox DBEngine.Workspaces(0).Groups.Count |
|
| auteur : |
Pour compter le nombre de groupe auxquels appartient un utilisateur, il suffit d'appeler la
propriété Count de sa collection Groups.
Par exemple :
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function NombreGroupesUtilisateurDAO _
(strNomUtilisateur As String) As Integer
On Error GoTo err
Dim oWs As DAO.Workspace
Set oWs = DBEngine.Workspaces(0)
NombreGroupesUtilisateurDAO = _
oWs.Users(strNomUtilisateur).Groups.Count
err:
End Function |
Exemple d'utilisation :
MsgBox NombreGroupesUtilisateurDAO("Admin") |
|
| auteur : |
Voici un exemple de création d'un nouveau groupe à l'aide de la méthode CreateGroup.
Important : Pour que ce codes fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub CreerGroupeDAO()
Dim oWs As DAO.Workspace
Dim strPid As String
Dim strNom As String
strNom = "Groupe_essai"
strPid = Format(Now(), "yyyymmddhhnnss")
Set oWs = DBEngine.Workspaces(0)
With oWs
.Groups.Append .CreateGroup("GrpTest", strPid)
End With
End Sub |
Le PID est un identifiant unique du groupe, aussi,
un moyen simple d'obtenir l'unicité de sa valeur est de sa baser sur l'horloge du système.
C'est ce qui a été fait ici à l'aide de la fonction Format.
|
| auteur : |
Voici un exemple de création d'un nouvel utilisateur ainsi que l'assignation de ce dernier à un groupe.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub CreerUtilisateurDAO()
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Dim strPid As String
Dim strNom As String
Dim strPasse As String
strNom = "Utilisateur_essai"
strPid = Format(Now(), "yyyymmddhhnnss")
strPasse = "password"
Set oWs = DBEngine.Workspaces(0)
Set oUsr = oWs.CreateUser(strNom, strPid, strPasse)
oWs.Users.Append oUsr
oWs.Groups("Admins").Users.Append oWs.CreateUser(strNom)
End Sub |
Le PID est un identifiant unique de l'utilisateur, aussi,
un moyen simple d'obtenir l'unicité de sa valeur est de sa baser sur l'horloge du système.
C'est ce qui a été fait ici à l'aide de la fonction Format.
|
| auteur : |
Voici un exemple de procédure permettant de lister l'ensemble des groupes d'utilisateurs.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub ListerGroupesDAO()
Dim oWs As DAO.Workspace
Dim oGrp As DAO.Group
Set oWs = DBEngine.Workspaces(0)
For Each oGrp In oWs.Groups
MsgBox oGrp.Name
Next oGrp
End Sub |
|
| auteur : |
Voici un exemple de procédure permettant de lister l'ensemble des utilisateurs.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub ListerUtilisateursDAO()
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Set oWs = DBEngine.Workspaces(0)
For Each oUsr In oWs.Users
MsgBox oUsr.Name
Next oUsr
End Sub |
|
| auteur : |
Voici un exmple de procédure permettant d'afficher les noms des groupes auxquels appartient l'utilisateur passé en paramètre.
Important : Pour que ce code fonctionne vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub ListerGroupeUtilisateurDAO(strNomUtilisateur As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oGrp As DAO.Group
Dim oUsr As DAO.User
Dim strMessageErreur As String
Set oWs = DBEngine.Workspaces(0)
Set oUsr = oWs.Users(strNomUtilisateur)
For Each oGrp In oUsr.Groups
MsgBox oGrp.Name
Next oGrp
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessageErreur = "Cet utilisateur n'existe pas"
Case Else
strMessageErreur = "Erreur inconnue"
End Select
MsgBox strMessageErreur, vbCritical, "Erreur"
Resume fin
End Sub |
Exemple d'utilisation :
ListerGroupeUtilisateurDAO "Utilisateur1000" |
|
| auteur : |
Voici un exmple de procédure permettant d'afficher les noms des utilisateurs appartenant au groupe passé en paramètre.
Important : Pour que ce code fonctionne vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub ListerUtilisateurDansGroupeDAO(strNomGroupe As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oGrp As DAO.Group
Dim oUsr As DAO.User
Dim strMessageErreur As String
Set oWs = DBEngine.Workspaces(0)
Set oGrp = oWs.Groups(strNomGroupe)
For Each oUsr In oGrp.Users
MsgBox oUsr.Name
Next oUsr
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessageErreur = "Ce groupe n'existe pas"
Case Else
strMessageErreur = "Erreur inconnue"
End Select
MsgBox strMessageErreur, vbCritical, "Erreur"
Resume fin
End Sub |
Exemple d'utilisation :
ListerUtilisateurDansGroupeDAO "Admins" |
|
| auteur : |
Pour obtenir le nom de l'utilisateur courant (celui qui a ouvert la base de
données), il faut interroger la propriété UserName de l'espace de travail.
Important : Pour que ce code fonctionne vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function ObtenirNomUtilisateurDAO() As String
Dim oWs As DAO.Workspace
Set oWs = DBEngine.Workspaces(0)
ObtenirNomUtilisateurDAO = oWs.UserName
End Function |
Exemple d'utilisation :
MsgBox ObtenirNomUtilisateurDAO() |
|
| auteur : |
Pour supprimer de la gestion de sécurité tous les utilisateurs qui appartienent à
un groupe, il est nécessaire de parcourir la collection Users du groupe et d'appliquer la méthode
Users.Delete de l'espace de travail en passant le nom de l'utilisateur en paramètre.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub SupprimerUtilisateursDeGroupeDAO _
(strNomGroupe As String)
Dim oWs As DAO.Workspace
Dim oGrp As DAO.Group
Dim i As Integer
Set oWs = DBEngine.Workspaces(0)
Set oGrp = oWs.Groups(strNomGroupe)
For i = oGrp.Users.Count - 1 To 0 Step -1
oWs.Users.Delete oGrp.Users(i)
Next i
End Sub |
|
| auteur : |
Pour savoir si un groupe possède un ou plusieurs utilisateurs, il faut évaluer la propriété Count
de sa collection Users. Il suffit alors de parcourir l'ensemble des groupes pour déterminer ceux à supprimer.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub SupprimerGroupesSansUtilisateurDAO()
Dim oWs As DAO.Workspace
Dim oGrp As DAO.Group
Dim i As Integer
Set oWs = DBEngine.Workspaces(0)
For i = oWs.Groups.Count - 1 To 0 Step -1
Set oGrp = oWs.Groups(i)
If oGrp.Users.Count = 0 Then oWs.Groups.Delete oGrp.Name
Next i
End Sub |
|
| auteur : |
Pour savoir si un utilisateur appartient à un ou plusieurs groupes, il faut évaluer la propriété Count
de sa collection Groups. Il suffit alors de parcourir l'ensemble des utilisateurs (Collection Workspace.Users)
pour déterminer ceux à supprimer.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub SupprimerUtilisateursSansGroupeDAO()
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Dim i As Integer
Set oWs = DBEngine.Workspaces(0)
For i = oWs.Users.Count - 1 To 0 Step -1
Set oUsr = oWs.Users(i)
If oUsr.Groups.Count = 0 Then oWs.Users.Delete oGrp.Name
Next i
End Sub |
|
| auteur : |
Voici un exemple de création de suppression de groupe. Il suffit d'appeler la méthode
delete de la collection Workspace.Groups.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub SupprimerGroupeDAO _
(strNomGroupe As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim strMessage As String
Set oWs = DBEngine.Workspaces(0)
oWs.Groups.Delete strNomGroupe
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessage = "Groupe inexistant"
Case Else
strMessage = "Erreur inconnue"
End Select
MsgBox strMessage, vbCritical, "Erreur"
Resume fin
End Sub |
Le nom du groupe est à passer en paramètre de la fonction.
|
| auteur : |
Voici un exemple de création de suppression d'un utilisateur.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Sub SupprimerUtilisateurDAO _
(strNomUtilisateur As String)
On Error GoTo err
Dim oWs As DAO.Workspace
Dim strMessage As String
Set oWs = DBEngine.Workspaces(0)
oWs.Users.Delete strNomUtilisateur
fin:
Exit Sub
err:
Select Case err.Number
Case 3265
strMessage = "Utilisateur inexistant"
Case Else
strMessage = "Erreur inconnue"
End Select
MsgBox strMessage, vbCritical, "Erreur"
Resume fin
End Sub |
Le nom du groupe est à passer en paramètre de la fonction.
|
| auteur : |
Le plus simple pour vérifier si un groupe existe ou pas est de tenter d'y accéder et de gérer l'erreur en cas d'echec.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function TesterExistenceGroupeDAO _
(strNomGroupe As String) As Boolean
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oGrp As DAO.Group
Set oWs = DBEngine.Workspaces(0)
Set oGrp = oWs.Groups(strNomGroupe)
TesterExistenceGroupeDAO = True
err:
End Function |
Exemple d'utilisation :
MsgBox TesterExistenceGroupeDAO("Admins") |
|
| auteur : |
Le plus simple pour vérifier si un utilisateur existe ou pas est de tenter d'y accéder et de gérer l'erreur en cas d'echec.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function TesterExistenceUtilisateurDAO _
(strNomUtilisateur As String) As Boolean
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Set oWs = DBEngine.Workspaces(0)
Set oUsr = oWs.Users(strNomUtilisateur)
TesterExistenceUtilisateurDAO = True
err:
End Function |
Exemple d'utilisation :
MsgBox TesterExistenceUtilisateurDAO("Admin") |
|
| auteur : |
Le plus simple pour vérifier si un utilisateur appartient à un groupe est de tenter
d'accéder à celui-ci depuis l'objet Group recherché.
Important : Pour que ce code fonctionne vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function TesterUtilisateurDansGroupeDAO _
(strNomUtilisateur As String, _
strNomGroupe As String) As Boolean
On Error GoTo err
Dim oWs As DAO.Workspace
Dim oUsr As DAO.User
Set oWs = DBEngine.Workspaces(0)
Set oUsr = oWs.Groups(strNomGroupe).Users(strNomUtilisateur)
TesterUtilisateurDansGroupeDAO = True
err:
End Function |
La fonction retourne Vrai si l'utilisateur strNomUtilisateur appartient
au groupe nommé strNomGroupe.
Exemple d'utilisation :
MsgBox TesterUtilisateurDansGroupeDAO("Utilisateur1000", "Admins") |
|
| auteur : |
Cette fonction permet de savoir si un utilisateur appartient au moins à un groupe.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function EstUtilisateurSansGroupeDAO _
(strNomUtilisateur As String) As Boolean
Dim oWs As DAO.Workspace
Set oWs = DBEngine.Workspaces(0)
EstGroupeVide = Not oWs.Users(strNomUtilisateur).Groups.Count = 0
End Function |
Exemple d'utilisation :
MsgBox EstUtilisateurSansGroupeDAO("Admin") |
|
| auteur : |
Cette fonction permet de savoir si un groupe ne contient pas d'utilisateur.
Important : Pour que ce code fonctionne, vous devez ajouter la référence
Microsoft DAO 3.X Object Library.
Public Function EstGroupeVideDAO _
(strNomGroupe As String) As Boolean
Dim oWs As DAO.Workspace
Set oWs = DBEngine.Workspaces(0)
EstGroupeVide = Not oWs.Groups(strNomGroupe).Users.Count = 0
End Function |
Exemple d'utilisation :
MsgBox EstGroupeVideDAO("Admins") |
|
Consultez les autres F.A.Q's
|