![](https://ppfc.fr/wp-content/uploads/buddypress/groups/2/cover-image/652e9d877f782-bp-cover-image.jpg)
Problème de mise à jour de table sur Power Apps
-
Problème de mise à jour de table sur Power Apps
Posté par jayne sur 10 janvier 2024 à 11h33Bonjour,
Je espère que vous allez bien. Je suis actuellement confronté à un problème avec Power Apps. Récemment, j’ai commencé à travailler sur une application de demande d’intervention technique, et je suis à la recherche d’aide pour mettre à jour une table.
J’ai essayé le code ci-dessous, mais malheureusement, il ne fonctionne pas, un triangle jaune apparaît. Voici le code (Iddmd est la colonne des ID dans mon excel):
Patch(Tableau1_1; First(Filter(Tableau1_1;Tableau1_1; Iddmd)); {emailreparateur: TextInput5.Text; Solution: TextInput6.Text; analysetechnicien: TextInput8.Text; importance: TextInput2.Text; Statut: Dropdown2.Selected.Value});; Refresh(Tableau1_1);; Reset(TextInput5);; Reset(TextInput6);; Reset(TextInput8)
R3dKap a répondu Il y a 7 mois, 3 semaines 5 Membres · 25 Réponses -
25 Réponses
-
Bonjour jayne,
Dans ton Filter, quel est le critère pour définir les données ? Il devrait y avoir quelque chose comme Iddmd = XXX
Par ailleurs, il y a deux fois Tableau1_1
-
Merci pour ta réponse ! Si j’ai bien compris il faut définir la colonne Iddmd à travers une variable par exemple en faisant un Set(ValeurID; ThisItem.Iddmd) ce qui donnerait ce code pour la partie du filter : Filter(Tableau1_1; Iddmd = ValeurID). Est ce bien cela ?
-
On peut même faire encore plus simple en mettant l’item complet dans une variable.
Ca donnerait alors Set(varItem;ThisItem) ;; Patch(Tableau1_1;varItem;{…})
-
J’ai modifié mon code mais il ne fonctionne malheureusement pas, auriez vous une idée de ce qui ne va pas s’il vous plait ?
Voici le code :
Set(varItem; ThisItem);;
Patch(
Tableau1_1;
varItem;
{
emailreparateur: TextInput5.Text;
Solution: TextInput6.Text;
analysetechnicien: TextInput8.Text;
importance: TextInput2.Text;
Statut: Dropdown2.Selected.Value
}
);;
Refresh(Tableau1_1);;
Reset(TextInput5);;
Reset(TextInput6);;
Reset(TextInput8);;-
-
Le message d’erreur est “Type incompatible. Nous ne pouvons pas évaluer votre formule, car les types de variables de contexte ne sont pas compatibles avec les types de valeurs ailleurs dans votre application”
-
Dans ce cas, il faut vérifier dans ta liste SharePoint si le type de données de chaque colonne correspond bien à ce que tu mis dans les contrôles PowerApps
emailreparateur: Texte
Solution: Texte
analysetechnicien: Texte
importance: Texte
Statut: idem que Dropdown2-
Cette réponse a été modifiée Il y a 8 mois par
Geoffroy.
-
Cette réponse a été modifiée Il y a 8 mois par
-
Bonjour,
J’ai vérifié sur mon Excel et toutes les colonnes indiqués sont formatés en Texte.
-
Bonjour,
J’ai vérifié sur mon Excel et toutes les colonnes indiqués sont formatés en Texte. En ce qui concerne les variables je n’en avais aucun du nom de varItem. Parcontre j’ai une variable importance qui peut être modfiable.
-
-
Tout dépend de ce que tu as stocké dans ta variable varItem,
Si tu as stocké uniquement l’ID de la ligne, ça devrait fonctionner
Si tu as stocké l’enregistrement entier, tu peux appeler la valeur de l’ID avec vartItem.Iddmd
Pour la fonction Patch, il y a une erreur sur le 2nd argument: celui où tu es censée renseigner l’enregistrement à patcher, tu as trois possibilités :
- Mettre les valeurs par défaut
Patch(Tableau1_1; Defaults(‘Ta source de données’) ; {emailreparateur: TextInput5.Text; …….} )
, ce qui va créer une nouvelle ligne - Renseigner l’ID:
Patch(Tableau1_1; {Iddmd : 54} ; {emailreparateur: TextInput5.Text; …….} )
Où 54 est l’ID de la ligne que tu souhaites patcher - Fournir l’enregistrement complet avec un LookUp :
Patch(Tableau1_1; LookUp(Tableau1_1; emailreparateur = “polo@moumoute.com” ) ; {emailreparateur: TextInput5.Text; …….} )
-
Bonjour,
Merci de ta réponse. J’ai essayé d’effectuer les deux manœuvres de patch à savoir définir le varItem comme une valeur qui stock tout et en faisant varItem.Iddmd :
Set(varItem; ThisItem);;
Patch(
Tableau1_1;
{Iddmd: varItem.Iddmd};
{
emailreparateur: TextInput5.Text;
Solution: TextInput6.Text;
analysetechnicien: TextInput8.Text;
importance: TextInput2.Text;
Statut: Dropdown2.Selected.Value
}
);;
Refresh(Tableau1_1);;
Reset(TextInput5);;
Reset(TextInput6);;
Reset(TextInput8);;Le message d’erreur indiqué est “Le type de cet argument ‘Iddmd’ ne correspond pas au type attendu ‘Text’. Type trouvé ‘Error’ ” or j’ai pourtant j’ai vérifier dans excel que toute était mis en format Texte et j’ai aussi fais avec une variable qui stock uniquement l’ID :
Set(ValeurID; ThisItem.Iddmd);;
Patch(
Tableau1_1;
{Iddmd: ValeurID};
{
emailreparateur: TextInput5.Text;
Solution: TextInput6.Text;
analysetechnicien: TextInput8.Text;
importance: TextInput2.Text;
Statut: Dropdown2.Selected.Value
}
);;
Refresh(Tableau1_1);;
Reset(TextInput5);;
Reset(TextInput6);;
Reset(TextInput8);;
-
C’est surprenant
A tester : Mettre un ID en dur d’une ligne qui existe dans le tableau et voir si le problème est le même, exemple :
<code class="language-diff"> Patch( Tableau1_1; {Iddmd: "34"}; { emailreparateur: TextInput5.Text; .......
-
Cette réponse a été modifiée Il y a 8 mois par
DavidZed.
-
Cette réponse a été modifiée Il y a 8 mois par
-
J’ai tester avec ce code mais ça n’a toujours pas fonctionné. La première fois c’était dû au format du du “Statut”. Le message d’erreur était “Le type de cet argument ‘Statut ne correspond pas au attendu ’Text’. Type ”Error” “. J’ai donc mis le statut en commentaire pour voir si il n’y avait que cela comme problème. Le deuxième message d’erreur qui est ensuite apparu est ”La colonne spécifiée “_” n’existe pas. La colonne avec le nom le plus proche est ‘ID2’ ” .
Voici mon code :
Patch(
Tableau1_1;
{Iddmd: “2ccac311bc”};
{
emailreparateur: TextInput5.Text;
Solution: TextInput6.Text;
analysetechnicien: TextInput8.Text;
importance: TextInput2.Text;
//Statut: Dropdown2.Selected.Value
}
);;
Refresh(Tableau1_1);;
Reset(TextInput5);;
Reset(TextInput6);;
Reset(TextInput8);; -
Un bon moyen d’éviter tous ces ennuis est de laisser tomber Excel et de passer sur Sharepoint.
- Mettre les valeurs par défaut
-
-
-
-
-
Jayne, si il te dit Statut ne correspond pas au attendu ‘Text’. Type ‘Error’ c’est que tu as une erreur dans le Items de ton Dropdown2. Qu’as-tu dans le Items de ton Dropdown2 ?
Sinon, mets-nous plutôt une capture complète de ton code avec la souris qui survole l’erreur. Ce sera plus facile d’identifier le pb je pense…
Voici comment remonter clairement ses erreurs Power Apps dans le forum : https://ppfc.fr/groupes/infos-ppfc/forum/topic/%f0%9f%92%a1-power-apps-remonter-clairement-une-erreur-de-formule/
-
Dans l’Item de mon dropdown2 j’ai variable correspondant à une petite table. etatsituation ne comprends que 2 valeurs : “fait” et “non fait”:
et mon code sur Power Apps s’affiche ainsi :
Et voici comment s’affiche l’erreur :
-
-
Il me propose etat. Et cela à corriger l’erreur, merci. Mais lorsque j’exécute mon code, il n’y plus de message d’erreur mais une ligne est ajouté et ce malgré le fait que j’ai spécifié l’id:
J’ai aussi testé le code suivant en utilisant une variable. Dans ce cas j’ai un message d’erreur:
-
A mon avis, le problème vient de Set(id;ThisItem.Iddmd).
Comme tu n’es pas dans une galerie, il ne reconnait pas ThisItem.
De plus, il vaut mieux éviter les noms qui ressemblent trop aux noms “System” comme id. Une bonne pratique consiste à mettre, par exemple, le préfixe var pour une variable.
-
Avant le formulaire, j’ai une galerie qui est présente afin de sélectionné le problème. Sur cette écran j’ai donc set la variable varRecordID, on a donc cela :
En ce qui concerne la page de la mise à jour via le formulaire je n’ai plus de message d’erreur avec ce code ci-dessous mais encore une fois une nouvelle ligne apparait au lieu de mettre à jour la ligne concerné :
-
Plutôt que d’utiliser {Iddmd: …} en 2è paramètre du patch, essaie plutôt un :
LookUp(TaSourceDeDonnées; Iddmd=varRecordID)
-
-
-
-
-
-
Une autre Bonne pratique est de ne pas utiliser Excel Comme source de données.
Oups Désolé :)))
Bonne journée à tous -discussion intéressante
Connectez-vous pour répondre.