Formulaires PowerApps Liste Sharepoint – erreur d'enregistrement

Étiquetté : , , ,

  • Formulaires PowerApps Liste Sharepoint – erreur d'enregistrement

    Posté par Gissinger Véronique sur 24 août 2022 à 6h40

    Bonjour à tous et à toutes,

    Je suis confrontée à un problème dans mes formulaires powerapps et cela fait à présent plusieurs jours que je planche dessus, sans succès.

    J’ai une liste Sharepoint utilisé par des personnes de mon service pour demander la réalisation de certains tests.

    Pour rendre cela plus convivial, j’ai créé 2 formulaires via PowerApps : un écran d’accueil et un écran de détails :

    Les deux formulaires fonctionnent très bien lorsque j’utilise la fonction modifier de ma liste Sharepoint.

    Mais dès lors que je tente de créer une nouvelle ligne, le champ “Date de la demande” du formulaire d’accueil me bloque. Bien que rempli, il le considère vide :

    Je ne parviens pas à comprendre le souci.

    Le seul indice que j’ai trouvé, mais qui n’a pas de sens pour moi, est que lorsque je bascule le champ sur le formulaire de détails, je n’ai plus d’erreur.

    Quelqu’un a-t-il une idée ?

    Merci par avance,

    Excellente journée,

    Véronique

    PostID=4VVrNK447keN2Ek

    Gissinger Véronique a répondu Il y a 2 mois, 3 semaines 1 Membre · 7 Réponses
  • 7 Réponses
  • DavidZed

    Membre
    24 août 2022 à 10h25

    Bonjour Gissinger Véronique,

    Il y a peut-être un soucis dans le paramètre “update” du datacard ou l’identification du champ.

    Si tu supprimes le champ date de la demande et que tu l’ajoutes à nouveau dans le formulaire principal, est-ce que cela résous le problème ?

    CommentID=tmVE2mD7HdwFY0q, PostID=4VVrNK447keN2Ek

    • Gissinger Véronique

      Membre
      24 août 2022 à 10h47

      Bonjour et merci de ce premier retour rapide.

      Ci-joint la capture écran des pptés de mon datacard, tout semble ok :

      J’ai essayé de supprimer le champ et de la remettre, sans succès. J’ai même refait à plusieurs reprises ma liste et mon formulaire entier.

      La seule solution qui fonctionne, mais qui ne me satisfait pas, est de n’avoir qu’un seul formulaire…

      SubCommentID=32wwbwttjRbRqka, CommentID=tmVE2mD7HdwFY0q, PostID=4VVrNK447keN2Ek

  • R3dKap

    Membre
    24 août 2022 à 20h34

    Gissinger Véronique c’est peut-être dû à l’existence du 2è formulaire… Il y a peut-être un ResetForm qui se déclenche au mauvais moment qui fait que ton champ est vide au moment de l’enregistrement… Et la modification marche passke t’as déjà des données dedans…

    Comment gères-tu ce 2è formulaire sur le 2è écran ? Quel est la valeur de sa propriété Item ? Et OnSuccess ?

    Qu’as-tu comme code dans les différents événements de l’objet SharePointIntegration ?

    CommentID=NhrStT4KAE1fqik, PostID=4VVrNK447keN2Ek

  • Gissinger Véronique

    Membre
    25 août 2022 à 6h16

    Bonjour Emmanuel, merci pour cette réponse rapide. Je pense qu’effectivement le deuxième formulaire est la source du problème.

    Le deuxième formulaire est accessible via le contrôle flèche du premier :

    Mon premier, tout comme mon deuxième formulaire ont les pptés suivantes :

    J’ai pensé qu’effectivement le ResetForm() n’était pas bon mais j’ai essayé en enlevant cette requête, sans effet.

    Et voici mon contrôle d’intégration sharepoint qui fait bien appel au deux formulaires 👍

    Merci à nouveau d’accorder un peu de temps à mon souci,

    Bonne journée,

    Véronique

    CommentID=PfIdcAxfHbNdndK, PostID=4VVrNK447keN2Ek

  • Gissinger Véronique

    Membre
    25 août 2022 à 15h20

    Petite précision après nouvel essai : j’ai basculé sur mon premier formulaire tous les champs obligatoires et sur le second les autres : je n’ai plus d’erreur, mais les infos saisies sur le second formulaire ne sont pas enregistrées…

    CommentID=u8mTF6FsoK1dHjk, PostID=4VVrNK447keN2Ek

  • R3dKap

    Membre
    26 août 2022 à 17h18

    Merci pour ces éléments Gissinger Véronique.

    Alors, plusieurs choses…

    Dans ta dernière capture, on utilise pas l’opérateur “&” pour séparer les appels de fonctions. Cet opérateur sert à concaténer des chaînes de caractères… 😉 Pour séparer les appels de fonctions on utilise “;;” (“;” si ton interface est en anglais, mais je vois qu’elle est en français). Donc, par exemple :

    NewForm(SharePointForm1);; NewForm(SharePointForm1_1)

    Ensuite, la sauvegarde de tes données est plus complexe qu’il n’y paraît parce-que tes données sont éclatées dans 2 formulaires différents. Mais c’est pas infaisable…

    Première chose : les champs obligatoires de ta liste doivent TOUS être sur le premier formulaire qui est soumis. Car si tu es en mode création, TOUS tes champs obligatoires doivent être renseignés. A la modification c’est moins vrai passke t’aurais déjà des données dedans, mais bon…
    Donc l’idée c’est que c’est ton formulaire SharePointForm1 qui doit contenir les champs obligatoires.

    Ensuite, la soumission du 2ème formulaire ne doit se faire que SI ET SEULEMENT SI la soumission du premier s’est bien passée (sinon forcément, le 2è ne passera pas non plus).
    Et autre point : le RequestHide() comme les Reset() des 2 formulaires ne doivent se faire qu’à la fin du traitement, c’est à dire une fois que la soumission du 2è formulaire s’est bien passée.

    Autre problème que j’entrevois : le 2è formulaire doit être en mode MODIFICATION uniquement (FormMode.Edit). En effet, même si tu crées un nouvel élément dans ta liste, ton premier formulaire sera effectivement en mode création et à la soumission il créera bien un nouvel élément. Mais si le 2è est aussi en création il va tenter de créer un 2è nouvel élément alors qu’il suffit de modifier celui qui vient d’être créé. J’ai essayé de tenir compte de ça pour la suite ci-dessous… Arrrrrgh ! Ah bin non ça va pas marcher parce-que ton 2è formulaire sera en mode Edit sur un élément qui n’existe pas encore : tu ne pourras donc rien saisir dessus… Pas simple…
    Mmmm… A ce moment-là je ne vois qu’une solution : soumettre classiquement le 1er formulaire puis si ça s’est bien passé patcher (et non soumettre) l’élément avec les données du 2è formulaire.

    Donc, voici comment procéder :

    SharePointIntegration.OnSave

    SubmitForm(SharePointForm1)

    SharePointForm1.OnSuccess

    Patch('Trials requests'; SharePointForm1.LastSubmit; SharePointForm1_1.Updates);;nResetForm(SharePointForm1);;nResetForm(SharePointForm1_1);;nRequestHide()

    C’est pas l’idéal parce-qu’on fait appel au SharePointForm1_1 qui est sur un autre écran mais ça devrait marcher quand même…

    Sinon toutes les propriétés OnNew, OnEdit, OnView et OnCancel peuvent rester telles quelles mais où tu remplaces le “&” par “;;” comme expliqué précédemment.

    Essaie déjà ça et voyons ce que ça donne…

    Voilou… N’hésite pas si t’as encore besoin d’aide… 😉

    CommentID=aVQVHAclsugb8pd, PostID=4VVrNK447keN2Ek

    • Gissinger Véronique

      Membre
      29 août 2022 à 12h00

      Trop top, cela fonctionne ! Pour information, j’ai modifié mes & par ;; , j’ai mes 2 forms qui sont en mode FormMode.Edit et j’ai implémenté les modifications sur SharePointIntegration et onsuccess.

      Merci encore de ton aide, à bientôt 😃

      SubCommentID=l9WjBI83fXIjDYq, CommentID=aVQVHAclsugb8pd, PostID=4VVrNK447keN2Ek

Connectez-vous pour répondre.