Case à cocher

  • Case à cocher

    Posté par Karlemagne sur 10 novembre 2021 at 12h48

    Bonjour à tous,

    J’ai à nouveau besoin de votre aide, bien que je ne suis pas sur que ce que j’aimerais faire soit possible, mais je tente quand même…

    Voila : Je suis toujours sur mon appli de réservation d’outils, dont la liste est établie dans une table Dataverse. Dans cette table, j’ai un champ multilignes appelé “Accessoires”

    Ce que j’aimerais pouvoir faire à partir de la, une fois que l’employé a validé ses dates et heures de réservation, ce serait qu’il est la possibilité de sélectionner via des cases à cocher les accessoires dont il pourrait avoir besoin s’il y en a

    Est-ce qu’en l’état actuel ce serait possible? ou bien devrais-je créer une nouvelle table qui serait alimentée par mon champs multilignes de ma “Liste outils” à partir de mon “Gallery1.Selected” de mon écran principal ?

    Si c’est possible de faire une chose comme celle-la, je suis preneur de toutes solutions disponibles qui fonctionnerait chez moi.

    En vous remerciant par avance de votre retour.

    Karlemagne

    PostID=Svd1FBmiF2OE4yq

    R3dKap a répondu 11 months, 3 weeks ago 1 Membre · 12 Réponses
  • 12 Réponses
  • R3dKap

    Member
    10 novembre 2021 at 17h17

    @Karlemagne, oui c’est possible…

    Ton champs qui contient les accessoires étant au format multilignes, il va falloir le “splitter” pour en récupérer les éléments séparément. Pour cela il faut impérativement que tes accessoires dans ce champ soient séparés par un délimiteur (le retour à la ligne par ex.).

    Dans ce cas, la fonction suivante te permettra de transformer la chaîne de ton champ multiligne en une table à une colonne nommée ‘Result‘ :

    Split(txtAccessoires.Text, Char(10))n

    Donc tu mets ce code dans le Items d’une galerie. Dans cette galerie tu mets une case à cocher et sur la propriété Text de la case à cocher tu mets Result.

    Et ça devrait le faire… 😉

    CommentID=33FyeveNabPAiNM, PostID=Svd1FBmiF2OE4yq

  • Karlemagne

    Member
    11 novembre 2021 at 21h17

    Merci une nouvelle fois pour ton retour @R3dKap. Ca fonctionne parfaitement. Ne me reste plus qu’à mettre en forme cette étape, d’écrire quelques codes par-ci par-là pour enregistrer les données dans ma seconde table avant de passer à l’étape suivante.

    CommentID=du39ohzuTg6wmrr, PostID=Svd1FBmiF2OE4yq

  • Karlemagne

    Member
    12 novembre 2021 at 19h13

    C’est encore moi… 🙄,

    J’ai mis en forme ma galerie avec mes cases à cocher et tout et tout, seulement je bloque sur comment envoyer tout ça dans ma table… Si j’ai qu’une seule case de cochée, ça fonctionne nickel, mais dès lors que j’en ai 2 ou plus, ça se complique -> seule la dernière est prise en compte. Je sais pourquoi, mais je n’arrive pas à contourner le problème. Voici le code que j’ai écrit (merci Google) pour valider mes choix d’accessoires :

    ForAll(Filter(Gallery4.AllItems;Checkbox2.Value= true );Patch('Calendrier réservation outils';LookUp('Calendrier réservation outils';'Calendrier réservation outils ID'=varCurrentEvent.'Calendrier réservation outils ID');{'Accessoires demandés':var_Accessoires_select}));;Set(var_Reservation_accessoires; false );;Set(var_Reservation_outils; false );;Checkbox2.Value= falsen

    Pour moi le problème vient du Patch qui, si j’ai bien compris, veut m’enregistrer chaque texte de mes cases dans une ligne différente de ma table, mais comme je lui demande de regarder sur la ligne correspondant à l’ID qui se trouve être identique pour chaque accessoires, il doit écrire le texte de ma 2ème case par dessus celui de la 1ère qu’il a écrit la microseconde juste avant… Je n’arrive pas à trouver le truc pour que toutes mes cases à cocher s’enregistre sur la même ligne……. Je pensais utiliser concat, mais je ne suis pas du tout sur de mon coup.

    De plus, mon << Checkbox2.Value=false >> ne semble pas fonctionner pour décocher mes cases une fois la validation effectuer.

    Une idée pour me débloquer stp?

    CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • R3dKap

      Member
      13 novembre 2021 at 15h57

      @Karlemagne Pour t’aider il faudrait que tu me détailles ton modèle de données : la liste des tables avec les colonnes (les plus intéressantes), leur type de donnée, et préciser les relations entre les tables…

      Pour ce qui est de ton Checkbox2.Value = false, c’est normal que ça ne marche pas. Tu sais bien que dans Power Apps tu ne peux pas définir la valeur d’une propriété de cette façon-là. Tu dois plutôt définir la valeur de la propriété Default de Checkbox2 EN FONCTION d’autre chose. Donc, passer par une variable par exemple.

      SUGGESTION : pour représenter ton modèle de données je t’invite à regarder ceci (la partie sur le modèle de données), à télécharger ce PPT et à y représenter ton modèle à toi… 🙂

      Au fait, pour mettre du code dans tes questions, sélectionne-le et clique sur l’icône :

      😉

      SubCommentID=sbE6nDUOzPn4cNQ, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • Karlemagne

      Member
      18 novembre 2021 at 11h33

      Bonjour @R3dKap ,

      Je te fais ça dès que possible, c’est un peu la galère en ce moment au boulot, pas trop eu le temps de me remettre sur l’appli…

      En ce qui concerne l’affichage de code dans mes question, j’ai utilisé l’icone que tu indique, mais soit je m’y suis mal pris, soit ça n’a pas fonctionné…

      SubCommentID=aQMkM2cDmtnDes2, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • Karlemagne

      Member
      18 novembre 2021 at 15h20

      Rebonjour @R3dKap ,

      En pièce jointe mon modèle de données, sauf que je n’utilise pas de liste Sharepoint, mais des tables Dataverse. S’il te faut autre chose, n’hésite pas à demander.

      SubCommentID=cpVeZhCR0tA7wBc, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • R3dKap

      Member
      18 novembre 2021 at 19h40

      Parfait. Ah c’est top, t’as utilisé mon modèle PPT… Tellement pratique pour moi comprendre ton modèle de données… 🙏👍

      Alors, voici comment procéder pour mettre à jour ta réservation d’outils avec les accessoires demandés :

      Patch(n    'Calendrier réservation outils'; n    LookUp('Calendrier réservation outils'; 'Calendrier réservation outils ID'=varCurrentEvent.'Calendrier réservation outils ID');n    {'Accessoires demandés':Concat(Filter(Galery4.AllItems; Checkbox2.Value);Result;Char(10))}n)n

      Donc j’ai repris ton Patch() et j’y ai juste modifié ce que l’on met dans ta colonne Accessoires demandés où j’y concatène tous les accessoires sélectionnés en les séparant par un retour à la ligne.

      Alors j’ai pas testé chez moi donc il y aura sûrement 2 ou 3 petites choses à rectifier mais la logique est là…

      Remarque : normalement, pour faire les choses proprement, il te faudrait une table dédiée pour lister tous tes accessoires et créer un lien entre Liste outils et Accessoires et un autre entre Calendrier réservation outils et Accessoires. Mais bon, on peut déjà commencer avec ta technique actuelle. Son gros inconvénient c’est que si tu renommes un accessoire, t’es foutu…

      SubCommentID=pRkO5eaDPUEdWGG, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • Karlemagne

      Member
      18 novembre 2021 at 20h12

      @R3dKap Merci de ton retour. J’étais donc sur la bonne voie avec le patch, le lookup et le filter imbriqués, mais après il devait certainement me manquer quelque chose, ou j’appelais mal ma table après, mais toujours est-il que je commence un peu à comprendre la logique de fonctionnement de PowerApps. J’appliquerai ta formule demain, et je la comparerai avec celle que j’essayais d’écrire pour tenter de comprendre mon erreur. En tout cas merci pour ton aide. Et merci aussi pour le fichier de modèle de données, il me servira plus tard pour un autre projet que j’ai en tête, 😉

      EDIT : ça fonctionne nickel, et juste en corrigeant une faute de frappe 😆

      SubCommentID=5XAFjwWuNcx3yDZ, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • Karlemagne

      Member
      22 novembre 2021 at 12h44

      C’est encore moi…🙄,tu vas finir par m’en vouloir à force… 😔

      Je galère encore avec le texte multiligne de ma colonne… Pour l’enregistrement, c’est bon tout fonctionne. Maintenant c’est pour la lecture que je n’y arrive pas. Je laisse la possibilité à la personne qui réserve de pouvoir modifier son choix sur les accessoires, dans le cas d’un oubli ou d’une erreur. Pour ce qui est de la réservation de l’outils en lui-même, c’est fonctionnel, j’arrive à récupérer les informations de date et heure pour modif éventuelle. Pour les accessoires, j’y arrive UNIQUEMENT si je n’en ai qu’un de sélectionné (la case correspondante se retrouve coché automatiquement)… dès lors que j’en ai 2 ou plus, cela ne fonctionne plus, aucune case ne se coche. J’ai essayé différente formule, souvent incohérente mais bon, “Qui ne tente rien n’a rien” comme dirait l’autre, 😜. Voici la seule formule que j’arrive à faire fonctionner, dès lors qu’il n’y a qu’un seul accessoire d’enregistrer dnas la réservation :

      LookUp(n            'Calendrier réservation outils';n            varCurrentEvent.'Accessoires demandés' = Self.Text;n            truen        )n

      Je suis sur que j’ai du utiliser la bonne formule lors de mes différents essais, mais peut-être était mal écrite…

      Quand tu auras quelques minutes à m’accorder de nouveaux…

      SubCommentID=LP4oFp7UqTCGDkq, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • R3dKap

      Member
      23 novembre 2021 at 13h50

      Pas de soucis, t’inkiet… 😉

      Tu n’as pas précisé où tu as mis cette formule… Sur le Default de la case à cocher ?

      Quoiqu’il en soit, la première question à toujours se poser lorsque l’on veut manipuler une donnée c’est : “Quel est le type de ma donnée ?” .

      Ton champ Accessoires demandés est un champ de type Text. Donc, utiliser un LookUp() n’a aucun sens car le LookUp() sert à rechercher un enregistrement dans une table, ce qui n’est pas du tout la même chose. Tu me suis ?

      Donc pour savoir si l’un des accessoires de ta galerie qui affiche tous les accessoires disponibles pour un outil fait partie de la réservation il faut simplement regarder si le nom de l’accessoire en question existe dans la chaîne de caractère de ta colonne Accessoires demandés.

      C’est à dire que sur le Default de ta case à cocher dans la galerie, tu mettes quelque chose comme :

      Find(n    ThisItem.Result;n    varCurrentEvent.'Accessoires demandés'n) > 0n

      ThisItem.Result c’est le nom de l’accessoire dans ta galerie (sauf erreur de ma part).

      Tu vois la logique ? 😊

      SubCommentID=u2fNrJA2nyFOkmM, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • Karlemagne

      Member
      23 novembre 2021 at 15h03

      pfffffffff

      c’était tellement simple et facile que je n’y ai même pas pensé une seule fois au Find… Comme d’habitude il faut toujorus que j’essaie de faire compliqué, même quand il n’y en a pas besoin….. 😔😔😔😔😔😔😔😔😔😔

      Merci quand même de ton retour @R3dKap

      SubCommentID=s8CdYFepFPjuq9A, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

    • R3dKap

      Member
      24 novembre 2021 at 8h26

      Avec plaisir @Karlemagne 😉

      SubCommentID=1e43ZAwZD8FPWhx, CommentID=Z7Qfik29K3BJImP, PostID=Svd1FBmiF2OE4yq

Connectez-vous pour répondre.