DavidZed
MembreRéponses céées sur le Forum
-
Hello Romane , peux tu nous montrer un screenshot ?
Car si c’est dans l’aperçu des données que tes champs apparaissent vides, c’est normal car les champs ne sont peuplés que si le champ est sollicité dans l’application.
Si c’est dans un objet où tu appelles ce champ et que rien ne remonte, c’est un autre problème
CommentID=eaKtiZN7zCdLYia, PostID=Knoz1uQrzzECZMu
-
il faut vérifier en sortie de requête que le type de donnée sur ce champ est bien int (numérique) le cas échéant le convertir dans le fichier si c’est possible, sinon dans le flux
CommentID=IA9Ua14CjljYTWG, PostID=aUdixXp0fw8AoeK
-
Bonjour ALAIN DEL GIUDICE ,
Ta condition ne peut pas être vraie, tu lui demandes de lister les lignes dont la valeur Points est à la fois egale à 500 et supérieure à 1000, ce qui est impossible.
Il faut remplacer le
And
de ta condition par unOr
:A noter que tu dois pouvoir formuler ce filtre directement dans ton action “obtenir les lignes” (filtre Odata)
CommentID=iSP578feSJMZCrr, PostID=aUdixXp0fw8AoeK
-
DavidZed
Membre7 novembre 2023 à 10h23 en réponse à: Problème affichage de données dans controle TableHello Data_Speacker ,
Ta formule fonctionne, elle te retourne toutes les lignes qui contiennent la chaîne de caractère
Entrée de texte
dans les colonnes ACTI_LIB, Année et ACTI_CODDu coup, il te faut enlever la valeur par défaut de ton TextInput1, qui doit être le fameux
Entrée de texte
et mettre ce texte d’indication dans la propriété HintTextPar contre si ton classeur comporte plus de 2000 lignes, tu vas avoir un problème de délégation, seuls les 500 à 2000 premières lignes seront évaluées.
Pour savoir si une formule n’est pas délégable, il suffit de cliquer dans la barre de formule et de survoler les éventuels passages soulignés en bleu, un HintBox t’indiquera la partie de la formule qui n’est pas délégable :
CommentID=xddYJCULUeOQbQZ, PostID=AuK7Myg0pmiXmSg
-
DavidZed
Membre7 novembre 2023 à 9h57 en réponse à: Nouveautés dans les propriétés des controles 'classiques' ? [Résolu]Ce contrôle ressemble au bouton par défaut dans les Power apps crées dans un environnement Dataverse for Teams, est-il possible que ton application soit un import de packege .zip ou .msapp d’une application qui a été créée sur un environnement D4T ?
Car je viens de tester sur la même authoring version, j’ai bien les boutons classiques :
Dans tous les cas, pour ne pas être bloqué, tu peux copier-coller un bouton d’une application existante si besoin
CommentID=uoO5hvrgZMOgJxE, PostID=AoY4ktsPpiyyXtk
-
Hello Lilian ,
Pour remonter correctement une erreur sur le forum, je t’invite à lire ce guide ici ce qui serait pertinent, serait de voir dans l’éditeur, quelle partie de ta formule est soulignée en bleu car ce problème d’affichage est lié à la délégation.
Il me semble qu’avec sharepoint, le “In” n’est pas délégable avec les colonnes complexes, dans ton cas la colonne Référent ADV ou contrat qui sont certainement des lookup, du coup il faut songer à le remplacer par un StartsWith() :
Filter('ADV AuRA';nStartsWith('Entité Juridique Parente' ; 'TSB_Recherche EJR/PC/ADV'.Text) ;nStartsWith('Référence PC/Contrat' ; 'TSB_Recherche EJR/PC/ADV'.Text) ; nStartsWith('Référent ADV pour la MEF'.Value ; 'TSB_Recherche EJR/PC/ADV'.Text) ; nStartsWith('Contrat : Statut'.Value ; 'TSB_Recherche EJR/PC/ADV'.Text) n)
CommentID=vh3UJ9JzYgW3vpf, PostID=0jhvdoWvGslPJj5
-
DavidZed
Membre6 novembre 2023 à 15h36 en réponse à: Champs texte – Ajouter les modifications au texte existantBonjour Romane ,
Dans ton formulaire, sur la propriété .Update de ton Datacard du champ “Comment”, admettons que tu aies la formule :
DatacardValue28.Text
Tu peux la remplacer par :
If(IsBlank(DatacardValue28.Text) ; ThisItem.Comments ; $"{ThisItem.Comments} </br> {User().FullName} ({Now()}) : {DatacardValue28.Text}")nn//si le DatacardValue28 est vide, on garde le même commentaire, si non on fait une concaténation du commentaire existant avec une nouvelle ligne
CommentID=XqSiXbJmePCjTcE, PostID=2pnwHMRYUbPvUOv
-
Hello Data_Speacker ,
Pour avoir le total général dans ta vignette jaune en bas, tu ajouter une colonne avec ton calcul et mettre le tout dans un Sum() :
Sum(AddColumns('Nom de ta source de données' ; "MONTANT TOTAL" ; ThisRecord.COMMANDE * ThisRecord.DEVIS ) ; 'MONTANT TOTAL')
Pour que ce soit plus clair, tu peux ajouter la colonne “Montant total” à ta table de données pour voir le produit devis*commande sur chaque ligne : Dans le .Items de ta DataTable, tu peux remplacer ta source par :
AddColumns('Nom de ta source de données' ; "MONTANT TOTAL" ; ThisRecord.COMMANDE * ThisRecord.DEVIS )
CommentID=BAbGT3OW2P6viQV, PostID=PZKyGTzEuLSDfgA
-
Hello Charline ,
Peut être que supprimer la partie heure dans l’update résoudrait le problème, dans ce cas il suffit simplement de l’enlever du format en remplaçant :
If( IsBlank(DateValue1.SelectedDate); "0"; DateAdd( Text(DateValue1.SelectedDate; "yyyy-mm-ddThh:mm:ss"); 2; TimeUnit.Hours ) )
par
If( IsBlank(DateValue1.SelectedDate); "0"; DateAdd( Text(DateValue1.SelectedDate; "yyyy-mm-dd"); 2; TimeUnit.Hours ) )
CommentID=KOe2ImaoiSim2gW, PostID=FGJ2FzAReIPZpEe
-
DavidZed
Membre4 novembre 2023 à 10h49 en réponse à: Suppression de doublons – ne garder que le dernier enregistrementHello,
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
-
Il faut partir sur un déclencheur “Quand un nouvel enregistrement est créé”
-
Ajouter une action “Obtenir les éléments” en filtrant (Odata) sur deux critères :
-
La catégorie = la catégorie de l’élément dans le déclencheur
-
La valeur Date < à celle de l’élément dans le déclencheur
-
-
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 :
-
Tri par date
-
Table buffer pour charger toutes les données en cache
-
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
-
-
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
-
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
-
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
-
je me rends compte que le Text() est mal placé, le DateAdd doit recevoir des données au format date et non du texte :
If( IsBlank(DateValue1.SelectedDate);n "0";n Text(DateAdd(DateValue1.SelectedDate; 2; TimeUnit.Hours ); "yyyy-mm-dd")n)
SubCommentID=SufFDMaBlZ7i3pD, CommentID=aj9RfdDGPFbMN34, PostID=FGJ2FzAReIPZpEe
-
Je dirai même :
DateDiff(Date(Year(DatePicker1.SelectedDate);1;0);DatePicker1.SelectedDate)
Ce qui te permet d’avoir un affichage qui sera dynamique en fonction de l’année sélectionnée
SubCommentID=7txBTn8LyD8amLi, CommentID=6bihcudhBbjjdwv, PostID=K7Agj7Q670Kvb1A