R3dKap
Expert Power AppsRéponses céées sur le Forum
-
R3dKap
Membre14 septembre 2023 à 11h34 en réponse à: Design: Emplacement Calendrier et son DatePickerHello JLF,
Je sais pas si t’as résolu ton pb… Sinon, dis-moi ce que tu as dans les X et Y des contrôles suivants pour que j’essaie de reproduire chez moi :
-
ctn_BODY__s08
-
dte_02_main_2_REAL__s08
Et du coup, pourquoi utilises-tu autant le contrôle Conteneur ? Perso je ne l’utilise que lorsque je dois superposer des éléments. Dans TOUS les autres cas je n’utilise que des Conteneur horizontal et Conteneur vertical.
Sinon, autre recommandation : jette un œil à la proposition de nomenclature que j’avais faite dans cet article (passke là j’avoue que je voudrais pas être celui qui reprends ton app… critique constructive bien sûr 😉) :
CommentID=GmGzA3XTqP6Jld9, PostID=Sy3ZOy9kWAlj9H6
-
-
R3dKap
Membre8 septembre 2023 à 7h49 en réponse à: Récupérer de la date d'approbation issue d'un fluxMickael, à ta place je rajouterai une petite étape dans le flux d’approbation pour renseigner la date dans une colonne dédiée de ta liste SharePoint… Non ?
CommentID=AR68q5oh6k1RO15, PostID=vBOQmRqyr6D8jiK
-
R3dKap
Membre7 septembre 2023 à 15h10 en réponse à: Relation entre plusieurs listes pour utilisation avec Power appsLe Id d’une colonne de recherche d’une liste correspond au ID d’une ligne de la liste liée :
Voilà un schéma qui te montre ça en détail :
-
y’a une liste Employé avec juste une colonne Titre qui contient le nom de l’employé
-
y’a une liste Formations avec :
-
une colonne Titre qui contient le nom du cours
-
une colonne Employe qui est une colonne de recherche qui pointe vers la liste Employé (et c’est la colonne Titre de Employé qui est affichée dans la colonne Employe de la liste Formations)
-
Le
First(Formations).Employé
renvoie la valeur de la colonne Employe de la première ligne de la liste Formations (flèche rouge du haut). Le résultat est une structure/enregistrement à 2 colonnes : Id et Value (flèche rouge du milieu et rectangle rouge complètement à gauche). La colonne Id de cette structure contient l’ID (tout en majuscule -> voir cercle bleu du haut) de la ligne de l’employé concerné dans la liste Employé (flèche bleu du bas).Pas facile à expliquer. Est-ce que t’as compris ? 😅
CommentID=EVEtgdOW7C14huo, PostID=ScEBXbMgfbT0yNB
-
-
Bonjour Maxime PECQUEUR,
Je dépile les questions non répondues… Navré du délai… Mais je suppose que depuis tu as découvert que ce n’était pas possible à moins de monter une petite usine à gaz… 😉
N’hésite pas à nous partager ton retour d’expérience. A+
CommentID=4bGD0mmguVH2Eto, PostID=6VI0sVaDuXg5YJr
-
R3dKap
Membre7 septembre 2023 à 8h44 en réponse à: Ajouter l'email de l'utilisateur dans une URL dynamiqueSalut Romain Ve.,
Je ne sais pas si tu as trouvé une solution à ta question, mais si l’url dynamique est généré à l’intérieur d’une mise en forme de liste tu peux utiliser l’opérateur @me : https://learn.microsoft.com/en-us/sharepoint/dev/declarative-customization/formatting-syntax-reference#me
CommentID=zzaefPHcXvXvHHN, PostID=dwAqWnPHzryVdFJ
-
Hello Shadoks_,
Si je comprends bien :
-
dans ton OnStart tu crées une collection en filtrant une liste SharePoint
-
sur un écran tu as une galerie branchée sur une liste SharePoint et tu souhaites filtrer les éléments de cette galerie pour n’afficher que ceux qui correspondent au contenu de ta collection à l’aide de l’opérateur “in“
Effectivement, cela te génère un avertissement de délégation : si la liste SharePoint qui alimente ta galerie a plus de 2000 éléments, tu risques fort d’avoir un filtrage incorrect car Power Apps va d’abord récupérer les 2000 premiers éléments de la liste SharePoint ET ENSUITE appliquer le filtrage basé sur ta collection (et donc il va ignorer toutes les lignes au-delà des 2000).
Il n’y a pas de solution à ton problème tant que l’opérateur “in” n’est pas délégable (et ce n’est pas le cas aujourd’hui). Il faut donc que tu trouves le moyen de réduire le nombre d’éléments de ta galerie AVANT d’y appliquer le filtrage basé sur ta collection.
Après, tu peux toujours utiliser cette solution de contournement, mais les perfs vont être toutes pourries (de mon point de vue c’est vraiment pas envisageable) :
Clear(colDataGalerie);;nForAll(n colGalerieOnStart As LoopItem;n Collect(n colDataGalerie;n Filter(n TaListeSharePoint;n TaColonne = LoopItem.Value // Ou une autre colonne que 'Value' dans ta collection du OnStartn )n )n)
Tiens-nous au jus… 😉
CommentID=snmaEaed9bnGEe5, PostID=V2vbx9CLVuJQffX
-
-
R3dKap
Membre6 septembre 2023 à 14h56 en réponse à: Relation entre plusieurs listes pour utilisation avec Power appsNormalement tu ne devrais pas avoir à rapatrier toutes les colonnes de Parc dans Non conformité, sinon la colonne de recherche n’a plus aucun sens.
Que veux-tu dire par “…je dois reprendre l’ensemble des informations de la liste Parc” ? Car c’est le lien entre Non conformité et Parc qui te permet d’avoir accès à toutes les données du parc pour une non conformité donnée.
En fait, ça dépend comment tu as structuré ton écran de création d’une nouvelle non conformité. En toute logique, avec ton modèle de donnée d’origine et juste la colonne de recherche NonConformité.Parc qui pointe vers la liste Parc, tu peux retrouver l’ensemble des informations du parc d’une non-conformité. Mais pour cela tu es obligé d’utiliser la fonction
LookUp(Parc, ID = cbxParcNonConformité.Id)
(attention aux majuscules/minuscules du “ID
” et “Id
“), en supposant que cbxParcNonConformité soit une combo box branchée sur ta colonne de recherche NonConformité.Parc. La fonction LookUp() va te renvoyer l’ensemble de l’enregistrement de ta liste Parc pour l’identifiant spécifié.Pour info, ta colonne de recherche NonConformité.Parc a une structure interne comme ceci :
{n Id: 23,n Value: "Parc n° 1"n}
Le
Id
(avec “d” minuscule) contient la valeur de la colonne SharePointID
(“D” majuscule) d’une ligne de ta liste Parc.CommentID=Uuzay6gi09zxfqW, PostID=ScEBXbMgfbT0yNB
-
R3dKap
Membre6 septembre 2023 à 8h36 en réponse à: Relation entre plusieurs listes pour utilisation avec Power appsSalut Florian Gajdos,
Pour faire cela il te suffit de créer dans chacune des tables qui doit faire référence à un centre de maintenance une colonne de type Recherche où tu spécifieras la liste Centre de maintenance comme liste cible et (par exemple) Centre de maintenance comme champ lié (qui sera affiché dans les listes déroulantes éventuelles de ton app).
Donc sur ton schéma, pour les listes Utilisateur, Parc et Non conformité remplace tes colonnes Centre de maintenance (Texte) par des colonnes Centre de maintenance (Recherche)… Et dessine tes flèches plutôt dans l’autre sens… 😉
Si t’as besoin d’aide pour créer ces colonnes n’hésite pas…
CommentID=C6N2GpP6gJY78FR, PostID=ScEBXbMgfbT0yNB
-
Je t’envoie un message en privé pour qu’on fasse un partage d’écran… 😉
CommentID=fXHwcWVwYcT5cPA, PostID=Cbi2CgiGylshSBK
-
Non la license n’a rien à voir là-dedans…
L’égalité stricte fonctionne : je l’ai testée chez moi avec un enregistrement stocké à 22h et en le recherchant à 22h je le retrouve bien.
Procède par étapes :
-
tu crées un petit flux où tu vas lister une ligne précise de ta table (en filtrant par exemple sur un identifiant) et dans le résultat du flux tu regardes la valeur de ta colonne ix_dateaction
-
modifie le flux pour compléter le filtre et rajouter avec un ‘and‘ une condition sur ix_dateaction en faisant une égalité stricte avec la valeur que tu as vue précédemment -> ça doit fonctionner
CommentID=yx0o9iEVgRbAKDg, PostID=Cbi2CgiGylshSBK
-
-
Si l’heure par défaut est toujours minuit (stocké 22h), alors tu devrais pouvoir repartir sur une égalité stricte comme ceci :
VarDate : addDays(utcNow(),1,'yyyy-MM-ddT22:00:00Z')nnFiltre : ix_dateaction eq 'VarDate'
Essaie pour voir si ça marche…
CommentID=PPrca0rdHJGoe26, PostID=Cbi2CgiGylshSBK
-
Que veux tu dire par “l’horaire par défaut est minuit” ? D’ailleurs ton application est une application de canevas ou une application pilotée par modèle ?
Car ça dépends ce qui est stocké en base (pas ce qui est affiché). Car même si à l’écran dans ton app tu vois minuit, dans le système il stockera 22h le jour précédent.
Il faudrait que tu fasses un petit flux pour lire juste une ligne de ta table et regarder dans le résultat la valeur effective de la date et la comparer avec celle affichée dans l’application. Tu peux mettre une capture de ça ?
CommentID=QHmVL6r2RuWHM2O, PostID=Cbi2CgiGylshSBK
-
Après avoir fait un test chez moi j’ai trouvé l’origine du problème : dans ton action Lister les lignes tu fais un test d’égalité stricte -> comme les heures sont prises en compte, l’heure de la date du jour ne correspond jamais (à moins d’un coup de bol de malade) à celle des enregistrements de ta table.
J’ai étudié différentes pistes pour contourner ce problème :
-
impossible de préciser dans la condition de filtrage que tu ne veux comparer que la date et pas l’heure
-
créer une colonne calculée pour n’y mettre que la date : pas possible avec les nouvelles fonctions Power Fx car ne gère pas les fuseaux horaires
-
basculer ta colonne en date uniquement (mais les enregistrements existants conserveront leurs heures d’origine et on ne pourra donc pas faire une comparaison exacte)
La seule solution consiste à écrire une condition qui vérifie que ta colonne ix_dateaction est comprise entre ta VarDate à minuit et ta VarDate à 23h59mn59s…
Il te faut donc 2 variables : une VarDateStart avec
addDays(utcNow(),1,'yyyy-MM-ddT00:00:00Z')
et une VarDateEnd avecaddDays(utcNow(),1,'yyyy-MM-ddT23:23:23Z')
et d’écrire la condition suivante pour le filtre de ton action Lister les lignes :ix_dateaction ge 'VarDateStart' and ix_dateaction le 'VarDateEnd'
Ca devrait marcher tant que tu n’as pas d’enregistrement dans ta table avec des heures positionnées entre 22h et minuit car on a pas géré le décalage horaire avec l’heure UTC (en effet, les dates sont enregistrées en UTC dans ta table alors que toi t’es sur le fuseau horaire de Paris (+2 en ce moment)). Ce qui veut dire qu’en réalité avec cette solution on vérifie que ix_dateaction est comprise entre (VarDate à 22h) et (VarDate+1 à 22h)… 😉 Mais bon, j’espère que ça le fera quand même. Et d’ailleurs j’espère que tous tes users sont dans le même fuseau horaire, sinon va falloir faire un flux beaucoup plus complexe pour prendre en compte le fuseau horaire de l’utilisateur connecté… 😅
Dis-nous si ça fonctionne… Vérifie bien les enregistrements que ton action Liste les lignes te retourne : c’est ça qui est important. La suite de ton flux avec la boucle et l’envoi du mail est bon lui…
CommentID=1Q5YPMIzGB7aeCn, PostID=Cbi2CgiGylshSBK
-
-
Salut Lilian,
Tu ne peux pas comparer que les heures. Supprime cette étape et garde simplement ce que DavidZed t’as proposé précédemment avec l’action Obtenir l’heure passée et ça va marcher… 😉
En fait si tu regardes le résultat de cette action tu vois que le format est le suivant 👍
Ce format doit être respecté pour la comparaison qui est faite plus bas dans Requête de filtre… 🙂
SubCommentID=9dfIUFYB1PJKzSl, CommentID=NH4C02lGbk2Mkwf, PostID=S2Kn4agZ3vA4kKQ