Filtrer sources de données suivant une variable

Étiquetté : ,

  • Filtrer sources de données suivant une variable

    Posté par Florian Gajdos sur 3 octobre 2023 à 8h19

    Bonjour,

    Je souhaite filtrer mes différentes sources suivant l’utilisateur qui est connecté et suivant ça Zone de travail et le centre de maintenance affilié. Sachant que certains utilisateurs n’ont pas de centre affilié mais seulement une zone

    Dans le Onstart de l’app je récupère ma liste d’utilisateur dans une collection et j’applique un filtre suivant l’adresse mail de l’utilisateur connecté :

     ClearCollect(n    ColUtilisateur;n    Filter(n    'Liste utilisateur';n    User().Email=Email.Emailn))

    Pour le moment j’arrive à filtrer mes différentes sources suivant le centre de maintenance en utilisant une variable :

    Set(n    VarUtilisateurCentre;n    LookUp(n        ColUtilisateur;n        Email.Email = User().Email;n        Centren    )n)

    Mais je sais pas comment faire pour que si la colonne « centre de maintenance » de la collection est vide la variable prenne en compte la colonne « zone » .

    J’image avec un If et un blank() mais je ne trouve pas la manière de le coder.

    Merci par avance pour l’aide.

    PostID=5a7Rr19gf8iIdyo

    Florian Gajdos a répondu Il y a 9 mois, 1 semaine 1 Membre · 4 Réponses
  • 4 Réponses
  • DavidZed

    Membre
    3 octobre 2023 à 12h32

    Hello Florian Gajdos ,

    Pour simplifier, tu peux directement définir ta variable depuis ta source de données, sans passer par ta collection ( Je pars du principe que tu as une colonne ‘Zone‘ et une colonne ‘Centre‘ dans ta liste ‘Liste utilisateurs’ ) :

    Set(n    VarDroitsUtilisateur;n    LookUp(n        'Liste utilisateur';n        Email.Email = User().Emailn            )n)

    Et on ne précise pas de colonne dans le 3eme argument du lookup, car on va avoir besoin de plusieurs colonnes (idéalement, on peut mettre un ShowColumns() pour ne récupérer que les colonnes utiles).

    Ensuite, dans les gleries où tu souhaites afficher les éléments filtrés en fonction de l’utilisateur, tu pourras mettre en test logique :

    Centre = VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Centre)

    Zone= VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Zone)

    Ce qui signifie :

    • 1ere condition : uniquement les enregistrement dont le centre est celui de mon utilisateur, ou si mon utilisateur n’a pas de centre : les enregistrement de n’importe quel centre.

    • 2 eme condition : uniquement les enregistrement dont la zone est celle de mon utilisateur, ou si mon utilisateur n’a pas de Zone : les enregistrement de n’importe quelle zone.

    Ce qui donne si tu as une liste de lieux d’intervention avec également une colonne Zone et une colonne Centre :

    Filter(n'Lieux d'intervention';nCentre = VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Centre);nZone= VarDroitsUtilisateur.Centre || IsBlank(VarDroitsUtilisateur.Zone)

    CommentID=4vocuyB9JfGtzUb, PostID=5a7Rr19gf8iIdyo

    • Florian Gajdos

      Membre
      3 octobre 2023 à 13h25

      DavidZed merci pour ton aide. Effectivement c’est plus simple et plus direct.

      En applicant j’ai une erreur dans mon filtre car les colonnes zone et centre de ma liste utilisateur sont des colonnes “recherche” . Donc la comparaison ne peut pas se faire entre un record et text

      Je me demande si je ne vais pas devoir malgré tout passer par une collection et utiliser le même code que j’avais utilisé dans mon dernier post :

      https://ppfc.fr/power-apps/post/erreur-sauvegarde-collection-vers-liste-sharepoint-ukZsywYt1asBB4K

      SubCommentID=9tnzKUadgqwUqND, CommentID=4vocuyB9JfGtzUb, PostID=5a7Rr19gf8iIdyo

    • DavidZed

      Membre
      3 octobre 2023 à 15h30

      Alors pour des colonnes recherche :

      Filter( 'Lieux d'intervention'; nCentreID.Id = VarDroitsUtilisateur.Centre.Id || IsBlank(VarDroitsUtilisateur.Centre);nZoneId.Id= VarDroitsUtilisateur.Zone.Id|| IsBlank(VarDroitsUtilisateur.Zone)

      mieux vaut se baser sur l’Id que la value L’ID est une clé unique

      SubCommentID=o2fpYAFeaNRhAG6, CommentID=4vocuyB9JfGtzUb, PostID=5a7Rr19gf8iIdyo

    • Florian Gajdos

      Membre
      4 octobre 2023 à 8h04

      C’est parfait 😀 tu m’enlèves une bonne épine du pied, merci beaucoup pour ton aide !

      SubCommentID=tzqbB0LTOIY3kjl, CommentID=4vocuyB9JfGtzUb, PostID=5a7Rr19gf8iIdyo

Connectez-vous pour répondre.