Identification dans une base access et vu réduite

zifnab69 Messages postés 4 Date d'inscription jeudi 5 avril 2018 Statut Membre Dernière intervention 30 septembre 2024 - 30 sept. 2024 à 16:28
Bruno83200_6929 Messages postés 242 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 30 septembre 2024 - 30 sept. 2024 à 18:30

Bonjour,
je suis totalement pommé dans la gestion des variables .


j'ai une base accès "de test" qui contient 4 tables 
- T_users qui contient des utilisateurs et leur appartenance à un groupe.
- T_groupe (déclare les groupes)
-T_affaire et T_matériel qui contient des "affaires" et des "matériels" ainsi que les groupes auxquels ils appartiennent.
 

Je souhaiterai que lors de l'ouverture de la base, un formulaire" F_login"  demande le nom de l'utilisateur ( pas de mots de passe) et qu'ensuite, les formulaires "F_affaires" et "F_matériels" ne fassent apparaitre que les affaires et les matériels qui appartiennent au groupe auquel l'utilisateur appartient.

Une affaire et un matériel peut appartenir à plusieurs groupes.
Un utilisateur n'appartient qu'à un seul groupe.

Donc concrètement, il faut que le nom d'utilisateur soit enregisté dans une variable et que cette dernière puisse être rappelée au niveau de filtres présents dans divers formulaires sans avoir à les renseigner une nouvelle fois.

si une bonne âme peut m'indiquer le chemin :)

En lien la base de donnée

https://drive.google.com/file/d/1thM1VkF72pWntx7_4AJsGXn2IyHsRnbr/view?usp=sharing

Merci infiniment


Windows / Edge 129.0.0.0

A voir également:

1 réponse

Bruno83200_6929 Messages postés 242 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 30 septembre 2024 45
30 sept. 2024 à 18:30

Bonjour,

Je vais essayer de t'aider. Pour réaliser ce que tu souhaites dans ta base de données Access, voici une approche en plusieurs étapes :

- PRIMO - Créer le formulaire F_login

Crée un formulaire simple avec un champ de texte où l'utilisateur pourra entrer son nom. Pas besoin de mot de passe, donc un seul contrôle est nécessaire.

Ajoute un bouton pour soumettre le nom de l'utilisateur.

- SECUNDO - Enregistrer le nom de l'utilisateur dans une variable

Dans VBA, tu peux déclarer une variable globale qui va contenir le nom de l'utilisateur une fois qu'il l'aura entré. Cette variable sera accessible dans d'autres modules ou formulaires.

' Module VBA pour stocker la variable utilisateur
Public CurrentUser As String

' Code pour le bouton de connexion dans le formulaire F_login
Private Sub btnLogin_Click()
    ' Récupérer le nom d'utilisateur depuis le champ de texte
    CurrentUser = Me.txtUserName.Value
    
    ' Vérifier si l'utilisateur existe dans la table T_users
    If DCount("*", "T_users", "UserName='" & CurrentUser & "'") > 0 Then
        ' Si l'utilisateur existe, ouvrir les formulaires et fermer celui de login
        DoCmd.OpenForm "F_affaires"
        DoCmd.OpenForm "F_materiels"
        DoCmd.Close acForm, "F_login"
    Else
        MsgBox "Nom d'utilisateur non trouvé", vbExclamation
    End If
End Sub

- TERTIO - Filtrer les formulaires F_affaires et F_materiels

Dans les formulaires "F_affaires" et "F_matériels", tu vas appliquer un filtre pour ne montrer que les affaires et matériels appartenant au groupe de l'utilisateur connecté.

Utilise une requête qui associe les tables et filtre les enregistrements.

Voici un exemple de code à ajouter dans l’événement On Open des formulaires "F_affaires" et "F_matériels" :

Private Sub Form_Open(Cancel As Integer)
    Dim UserGroup As String
    
    ' Récupérer le groupe de l'utilisateur depuis T_users
    UserGroup = DLookup("Groupe", "T_users", "UserName='" & CurrentUser & "'")
    
    ' Appliquer le filtre pour afficher les affaires ou matériels du groupe de l'utilisateur
    Me.Filter = "Groupe='" & UserGroup & "'"
    Me.FilterOn = True
End Sub

Structure des tables

T_users : Contient les utilisateurs et leur groupe.

T_groupe : Contient les informations des groupes.

T_affaire et T_matériel : Contiennent les informations des affaires et matériels et leur groupe respectif. Si une affaire ou un matériel peut appartenir à plusieurs groupes, il peut être nécessaire d'utiliser une table de jointure pour gérer ces relations plusieurs-à-plusieurs (par exemple, T_affaire_groupe et T_materiel_groupe).

Perso, j'aurais essayé de faire comme cela :

Le formulaire F_login récupère le nom d'utilisateur et le stocke dans une variable globale.
Les formulaires F_affaires et F_matériels utilisent cette variable pour appliquer un filtre basé sur le groupe de l'utilisateur.
Les données sont filtrées à l'ouverture des formulaires en fonction du groupe de l'utilisateur.

Cela devrait te permettre de gérer dynamiquement l'affichage des affaires et matériels en fonction du groupe auquel appartient l'utilisateur connecté.


0