Réponses céées sur le Forum

Page 23 sur 71
  • DavidZed

    Membre
    4 novembre 2023 à 10h49 en réponse à: Suppression de doublons – ne garder que le dernier enregistrement

    Hello,

    Ton poste étant dans la section Dataverse, je pars du principe que tu souhaites supprimer les enregistrements ayant une date antérieure au dernier record pour chaque référence.

    Tu as plusieurs manières d’y parvenir

    Soit avec Power Automate :

    A privilégier si la table reçoit des nouveaux enregistrements en grande quantités / à forte fréquence

    1. Il faut partir sur un déclencheur “Quand un nouvel enregistrement est créé”

    2. Ajouter une action “Obtenir les éléments” en filtrant (Odata) sur deux critères :

      1. La catégorie = la catégorie de l’élément dans le déclencheur

      2. La valeur Date < à celle de l’élément dans le déclencheur

    3. Ajouter une action supprimer une ligne : Mettre le item de l’action précédente (ce qui va créer une boucle For Each)

    Soit avec un Dataflow :

    A privilégier si la table contient beaucoup d’enregistrements et surtout si beaucoup d’enregistrements sont créés (ex 1000+ / jour)

    L’idée c’est de faire une requête sur ta table, réduire la table à un enregistrement par Référence avec un “group by” en se basant sur la valeur maxi du champ “Date” .

    La difficulté ici c’est que pour le champ “Valeur” et le GUID qui va te permettre de supprimer les autres enregistrements lors de l’import, il y a une certaine gymnastique à faire pour récupérer les valeurs correspondantes à la dernière date.

    Voici un article qui décrit le principe, étape par étape :

    1. Tri par date

    2. Table buffer pour charger toutes les données en cache

    3. Group By avec un List. First (ou List.Max selon l’ordre de tri) pour chaque colonne doit on doit récupérer la valeur correspondante (Valeur, GUID…) Bien nommer les colonnes avec leur nom d’entrée, ce sera plus facile pour le mappage

    Ensuite il faudra mapper en sélectionnant la même table et en veillant bien à cocher l’option

    Il y a peut être également d’autres possibilités : Outil de suppression en blocs, plugins…

    CommentID=eITVIwUP2ofAn4F, PostID=4DOQZ92DMZbUNMZ

  • DavidZed

    Membre
    2 novembre 2023 à 11h08 en réponse à: Problème avec un flux

    Hello Youcef DOUMANDJI ,

    Je n’ai jamais eu ce message, mais vu l’intitulé et la capture d’écran j’aurai tendance à regarder:

    Est-ce que le flux est partagé en lecture (pour le “impersonation” dans le message d’erreur) ?

    Est-ce que ce ne serait pas lié à la dépréciation du connecteur Dataverse legacy (actions avec logo Dataverse sur fond gris), dans le cas où cette erreur serait survenue il y a peu, alors que le flux tournait sans problèmes il y a quelques mois.

    CommentID=fdLehbWnXKfK4hn, PostID=bEqN23tL6MmrpVj

  • DavidZed

    Membre
    31 octobre 2023 à 20h45 en réponse à: Problème dans fonction ForAll

    Hello Mickael ,

    à mon avis il manque un ThisRecord. ici :

    Dans un Forall, tu appelles les valeurs de l’élément actuellement évalué avec ThisRecord. ou n’importe quel autre préfixe que tu détermine avec As, exemple

    ForAll(Sequence(10) As ThisNumber ; {Value: ThisNumber + 1 })

    Par contre ton modèle de données est assez spécial pour ce type de besoin, as-tu envisagé de faire une liste de demandes (avec le montant total) et un autre liste pour les articles, avec une colonne recherche vers la première. Ca te permettrait de recalculer le montant total avec une formule du type :

    Patch('Liste des demandes' ; varDemande ; {nPTotal: Sum(Filter('Liste des articles','Col recherche de la demande'.Id=varDemande.Id );TotalLigne)n})

    Ce serait moins gourmand en requêtes et plus cohérent au niveau de la donnée 🙂

    CommentID=cS6BjKdP1Z5W1vf, PostID=T9vSh2cd2jtqtA5

  • DavidZed

    Membre
    31 octobre 2023 à 13h36 en réponse à: Search dans une colonne lookup Dataverse

    Hello FRED b. ,

    D’ordinaire j’utilise la fonction Filter() plutot que Search() et je n’ai jamais à utiliser IsType AsType etc…

    Dans ce cas te figure j’aurai tendance à faire un simple filtre :

    Non délégable donc si tu as moins de 500 à 2000 clients :

    Filter(Droits;n       TextInput1.Text in 'Nom de la colonne recherche Compte'.'Nom du compte'n)

    Une version délégable avec startswith() si tu as beaucoup plus de clients :

    Filter(Droits;n       StartsWith('Nom de la colonne recherche Compte'.'Nom du compte'; TextInput1.Text)n)

    CommentID=u4263Nr4WGIlH7w, PostID=2DxOurTrRtWTGdq

  • DavidZed

    Membre
    31 octobre 2023 à 12h41 en réponse à: Equivalent requête suppression dans PowerApps

    Hello Arnaud ,

    Tu peux essayer un RemoveIf() cela devrait ressembler à une fonction du style :

    RemoveIf(Jours_travail_sans_feries; jour in  Jours_feries.date_f)

    CommentID=XoDzLNixwwUUqlW, PostID=GK3QuRDEq3aHO4U

  • DavidZed

    Membre
    31 octobre 2023 à 12h26 en réponse à: Individualiser suppression

    Bonjour Claire ,

    Si ton popup est dans la galerie, voici comment je te conseille de procéder :

    • Un dans le onselect de l’icon corbeille : UpdateContext({ctxItemToDelete:ThisItem})

    • Un dans un container nommé cntPopupDelete :

      • un label text avec le message de confirmation

      • un bouton annuler avec sur son .OnSelect : UpdateContext({ctxItemToDelete:Blank()})

      • Un bouton confirmer avec sur son .OnSelect : Remove('ta source de données' ; ctxItemToDelete) ;; UpdateContext({ctxItemToDelete:Blank()})

      • dans le OnVisible du container : ctxItemToDelete.ID = Thisitem.ID

    Le popup ne devrait apparaitre que pour l’item pour lequel on a cliqué sur la corbeille

    Dans ce genre de besoin, préfère les variables de contexte avec la fonction UpdateContext() plutot que les variables globales avec Set() car dans ce genre de cas il n’est pas nécessaire d’avoir la valeur de ton popup dans toute l’app, elle sera utilise seulement dans cet écran

    CommentID=FHfHvaHSrZjELi3, PostID=LOVeuz3mpAWfRtY

  • DavidZed

    Membre
    31 octobre 2023 à 12h13 en réponse à: Approbation – Problème avec boucle

    Bonjour Claire ,

    Tu peux, dans les paramètres avancés du déclencheur, déterminer une condition au déclenchement.

    L’idée ici est d’utiliser une colonne de métadonnée avec le statut de validation du document ex: non-démarrée / en cours / Rejeté / Validé et de ne délcencher le 2eme flux que si le statut est “Rejeté”

    Voici un article qui explique comment faire

    CommentID=SpNhInwFIMT0u3W, PostID=dYxia3ozFgqsZ0E

  • DavidZed

    Membre
    29 octobre 2023 à 16h37 en réponse à: Lister les sources de données d'une app

    Ce qui est faisable c’est un flow qui liste les bibliothèques SPO (avec l’action http request with sharepoint) et qui pourra renvoyer la liste à power apps.

    Par contre il ne sera pas possible d’ajouter automatiquement ( et dynamiquement ) une nouvelle bibliothèque qui serait renvoyée par ce flux comme une source de données exploitable comme tel dans l’application. Tout simplement car une bibliothèque peut avoir une structure qui lui est propre avec ses colonnes de métadonnées.

    CommentID=trKh3Mi4J7Nj76I, PostID=HAe0rsFp9QLb7wd

  • DavidZed

    Membre
    27 octobre 2023 à 16h20 en réponse à: Champs non modifiable

    Hello Romane ,

    Non ce n’est pas un problème de droits, c’est la vue modifiable des données des tables qui a des possibilité d’édition très limitées.

    Ton champ Image sera modifiable sans problème dans un formulaire d’application Canvas ou Model-driven

    CommentID=AJRnx3CgdwKzN49, PostID=n4SntvwA3S7J0y7

  • DavidZed

    Membre
    27 octobre 2023 à 13h15 en réponse à: Regrouper informations d'une collection à 2 colonnes en une seule.

    hello Mickael ,

    Oui tu peux le faire facilement dans ton collect ou clearcollect avec :

    ClearCollect(ColAllSuppliers;n             DropColumns(n                         AddColumns('Ta source de données' ;n                                    "Supplier" ; // nouvelle colonne ajoutéen                                    Coalesce(SupplierSAP,SupplierNonSAP)   // si SupplierSAP est vide, on prend la valeur SupplierNonSAPn                                   );n                         "SupplierSAP";"SupplierNonSAP" // on éjecte les colonnes SAP / NonSapn                         )n)

    je n’ai pas vérifié le code donc potentiellement quelques problemes de () à régler 🙂

    CommentID=IsKDpertmhlvE1E, PostID=m6ixjJ9XbQGc3tb

  • DavidZed

    Membre
    27 octobre 2023 à 12h59 en réponse à: Lister les sources de données d'une app

    Hello Vince ,

    Tu parles d’une collection au sens Power Apps ?

    CommentID=KugpOPJ4YwaHKzb, PostID=HAe0rsFp9QLb7wd

  • DavidZed

    Membre
    27 octobre 2023 à 12h46 en réponse à: Ecriture données dans TextInput

    Hello Thomas Le Large ,

    Avant toute chose : Ne pas poser de questions dans la base de connaissances, il y a des sections dédiées pour chaque sujet :

    Tu peux mettre dans le paramètre .Default de ton TextInput : If(CheckBox1.Value ; "Mon texte perso";"") ou encore If(CheckBox1.Value ; CheckBox1.Text;"") si tu veux récupérer le texte de ton checkbox

    ensuite, dans le paramètre .Reset du TextInput : CheckBox1.Value = false

    Pour réinitialiser le textinput quand on décoche le checkbox

    CommentID=5qKVyuOwwyDy1wT, PostID=04QYZCGdcZkHRea

    • DavidZed

      Membre
      27 octobre 2023 à 13h29 en réponse à: Ecriture données dans TextInput

      Le problème vient du fait que le contrôle est dans une gallerie, du coup c’est moins simple,

      Une autre solution, au oncheck, patcher la source :

      Il faut laisser le default de ton textinput à Thisitem.’Nom de ta colonne’

      Par contre, dans le .OnCheck du checkbox :

      Patch('Ta source de données ou collection'; ThisItem ; { 'Nom de ta colonne' : "Ton texte custom"} )

      SubCommentID=HPfQnlrKoXtVw21, CommentID=5qKVyuOwwyDy1wT, PostID=04QYZCGdcZkHRea

  • DavidZed

    Membre
    27 octobre 2023 à 11h59 en réponse à: Dictionnaire de données

    Hello Data_Speacker ,

    Pour ma part j’utilise Power Query dans excel avec la fonciton table/schema qui me donne une bonne base pour documenter mes lites et tables.

    Il suffit juste de mettre le format de colonne automatique et d’ajouter l’étape table.schema

    exemple avec une liste SP :

    et comme je préfixe toujours le nom technique de mes colonnes, il est facile de les filtrer sur ce critère et d’inclure les colonnes Id et Title

    CommentID=TLsvLT68nlld97k, PostID=j9isogpImizTn0d

  • DavidZed

    Membre
    27 octobre 2023 à 6h43 en réponse à: Aide sur Filtre comboBox

    Hello xbooster ,

    Je n’ai pas fait attention mais le cumul de And() et de Or() est trompeur (le test sur le combobox ne doit pas être dans le Or() ), voici une écriture simplifiée :

    //Code qui me filtre l'utilisateur, recherche sur TextSearchBox1 et comboBoxnFilter(n    Demande_statistique;n  n        StartsWith(n            colMAILDEMANDEUR;n            utilisateurn        );n       n            StartsWith(n                colTITREDEMANDE;n                TextSearchBox1.Textn            ) ||n            StartsWith(n                colNUMERODEMANDE;n                TextSearchBox1.Textn            ) ||n            StartsWith(n                colSTATUT.Value;n                TextSearchBox1.Textn            );n            colSTATUT.Value = ComboBox1.Selected.Value // true si le statut est sélectionné dans le ComboBoxn            || IsBlank(ComboBox1.Selected) // true si aucun item sélectionné dans le combobox       n)  

    Au lieu de faire un And(), on profite du fait que la fonction Filter() permet de fournir plusieurs tests logiques : Filter(Source ; Test1 ; Test2; ... ) et on remplace le Or() par des || entre les arguments

    SubCommentID=xsZ7E7lOGY9ByRh, CommentID=wDOdtKmwvkEgwKZ, PostID=DUJrgwjUaYUGcBZ

Page 23 sur 71