Répondre à: Faire une boucle qui génère des enregistrements dans une table à partir d'un formulaire

  • R3dKap

    Membre
    1 avril 2022 à 14h41

    @RED nickel… Merci pour tous les éléments…

    Alors, ce qui serait pas mal pour la suite c’est que tu mettes les vrais noms des écrans qu’il y a dans le PPT. Comme ça je pourrais y faire référence en les nommant précisément…

    Juste une p’tite remarque : cet écran je l’appellerai plutôt Examens… 😉

    Pour répondre à ton besoin initial qui est, je le reformule : lorsque je crée un nouvel examen pour une classe donnée, je veux associer chaque élève de cette classe à l’examen en question.

    1. Tu confirmes ?

    Du coup, je reformule techniquement maintenant : lorsque je suis sur l’écran Détails examen en mode création, à l’enregistrement je crée dans la liste Copies une ligne pour chaque élève de la classe pour l’examen qui est en train d’être créé.

    1. Tu confirmes ?

    Si c’est bien ça l’idée, voici comment procéder. Dans la suite de mes explications, comme je n’ai pas les noms réels de tes contrôles, je vais les nommer de manière suffisamment claire pour que tu comprennes à quoi je faire référence. Par exemple, sur cet écran :

    Tu noteras au passage la nomenclature des contrôles (sauf pour le DataCardValue qui est particulière) :

    xxxYyyyYyyy_ZZZ

    où :

    • xxx = 2 à 3 lettres minuscules pour le type de contrôle (t’as une liste dispo ici en page 6 : Power Apps canvas app coding standards)

    • YyyyYyyy = au format “Pascal Case” (première lettre de chaque mot en majuscule) qui décrit à quoi sert le contrôle

    • ZZZ = 2 à 4 lettres en majuscule qui représente l’écran où se trouve le contrôle

    Pour le ZZZ dans ce cas, j’ai choisi DETX pour “DETails eXamen”.

    Donc, pour en revenir à ton besoin, voici ce que je propose… ATTENTION à bien respecter les majuscules/minuscules surtout au niveau des colonnes qui s’appellent Id ou ID (c’est pas les mêmes 😉).

    Sur le btnSave_DETX.OnSelect :

    SubmitForm(frmExamen_DETX)

    Sur le frmExamen_DETX.OnSuccess :

    ForAll(n    Filter(n        Etudiants; n        Etu_cls_id = frmExamen_DETX.LastSubmit.Exm_cls_id.Idn    ) As ItemEtudiant;n    Patch(n        Copies;n        Defaults(Copies);n        {n            Cop_exm_id: frmExamen_DETX.LastSubmit.ID;n            Cop_etu_id: ItemEtudiant.ID;n            Cop_Statut: {Value: "A corriger"}n        }n    )n);;nBack()

    Pour la colonne Cop_Statut j’ai supposé que c’était une colonne de type Choix. Si c’est plutôt une colonne de type Text, alors écris la ligne comme ceci :

    Cop_Statut: "A corriger"

    Dans la formule j’utilise la propriété LastSubmit du formulaire qui contient l’enregistrement qui vient d’être soumis. Cela me permet de connaître l’ID du nouvel examen qui vient d’être créé et attribué par SharePoint. Cela me permet aussi d’accéder à tous les autres champs de l’examen car on a plus accès aux données via les DataCards qui eux ont déjà été “réinitialisés” en interne.

    Voilou… Essaie déjà ça et dis-moi ce que ça donne…

    CommentID=JFvV7DkOnY3YHSk, PostID=RTKvQn2SLy4RdUK