French Power Platform User Group

Please login or click SIGN UP FOR FREE to create your PowerPlatformUG account to join this user group.
Expand all | Collapse all

editform sur plusieurs lignes

  • 1.  editform sur plusieurs lignes

    Posted Jun 30, 2021 04:09 AM
    Bonjour à tous,
    J'ai fait une appli simple de réservation de véhicules, chaque jour correspond à une ligne dans une liste SharePoint, j'ai mis un contrôle Date Picker pour le choix de la date.
    Elle fonctionne bien mais on me demande la possibilité de réserver à la volée plusieurs jours à suivre.
    Je ne vois pas trop comment faire, je peux mettre deux contrôles Date Picker un pour le premier jour et un pour le dernier, mais comment faire (dans l'idée) pour créer une ligne de la liste par date ?
    merci pour vos pistes et bonne journée

    ------------------------------
    laurent boucard
    ------------------------------


  • 2.  RE: editform sur plusieurs lignes

    Posted Jun 30, 2021 04:56 AM
    là j'essaye en mettant ces dates dans une table puis je l'utilise avec ForAll mais bon je ne vois pas trop comment faire

    ------------------------------
    laurent boucard
    ------------------------------



  • 3.  RE: editform sur plusieurs lignes

    Gold Contributor
    Posted Jun 30, 2021 07:44 AM
    Salut Laurent,
    Utilise la fonction DateDiff() pour calculer le nombre de jours qui séparent ta date de début de réservation et ta date de fin de réservation (tu mets ça dans une variable nbJours).
    Ensuite, tu peux faire une boucle de ce type :
    ForAll(Sequence(nbJours); Patch(TaSourceDeDonnées; Defaults(TaSourceDeDonnées); {DateRéservation: DateAdd(DateDeDébutDeRéservation; Value-1); Véhicule: VéhiculeRéservé; etc...})​


    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 4.  RE: editform sur plusieurs lignes

    Posted Jun 30, 2021 10:04 AM
    j'ai fait un test et c'est absolument ça, un grand merci !
    faut que je place dans mon appli maintenant :D
    juste pour mon info, pour nbjours j'ai dû mettre DateDiff(DatePicker1.SelectedDate;DatePicker2.SelectedDate)+1, sans le +1 il manque un jour, j'avais déjà remarqué ça quand je fais un removeif pour épurer une liste, ça compte comment la différence ?

    ------------------------------
    laurent boucard
    ------------------------------



  • 5.  RE: editform sur plusieurs lignes

    Gold Contributor
    Posted Jun 30, 2021 10:18 AM
    Exact. J'avais fait gaffe au calcul de la date de réservation dans le Patch() en mettant bien un 'Value-1' mais j'avais oublié le nombre de boucles. Il faut effectivement que tu ajoutes +1 à nbJours car un DateDiff() entre un jour J et J+1 renvoie 1. Or il faut compter 2. Donc +1... 😊 Bien vu !

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 6.  RE: editform sur plusieurs lignes

    Posted Jul 01, 2021 12:22 AM
    encore merci :D
    Je me retrouve avec un nouveau problème, tu te souviens il y a quelques semaines je cherchais à filtrer un menu déroulant, tu m'avais donné ce code qui fonctionne parfaitement :
    Filter(Choices([@reservation].vehicule);Not(Value in ShowColumns( Filter(AddColumns(reservation;"voiture_txt";vehicule.Value);date = Text(DatePicker1.SelectedDate));"voiture_txt")))
    c'était pour réserver sur un jour c'est à dire une ligne de la liste
    maintenant je cherche à filtrer sur plusieurs jours, je dois donc je pense utiliser ForAll(Sequence(Value(nbjours.Text)) d'une part et quelque chose comme date= DateAdd(datedébut.SelectedDate; Value-1) , mais je ne trouve pas, j'ai essayé dans le test logique du seconde filter mais ça ne marche pas
    est-ce possible ou il faut tout autre chose ?

    ------------------------------
    laurent boucard
    ------------------------------



  • 7.  RE: editform sur plusieurs lignes

    Posted Jul 01, 2021 05:29 AM
    bon je n'étais pas du tout bien parti :D
    Je m'en suis sorti tout simplement avec ça DateValue(date) >= Value(datdébut.SelectedDate) && DateValue(date)<=Value(datefin.SelectedDate)
    mais j'ai galéré avec les DateValue et Value, ça marche même je ne comprends pas trop pourquoi

    ------------------------------
    laurent boucard
    ------------------------------



  • 8.  RE: editform sur plusieurs lignes

    Gold Contributor
    Posted Jul 01, 2021 05:49 AM
    Avec plaisir...
    Alors, maintenant que tu as une date de début et une date de fin pour tes réservations, je pense qu'il faudrait modifier la formule en question en quelque chose comme ceci :
    Filter(
        Choices([@reservation].vehicule);
        Not(
            Value in ShowColumns(
                Filter(
                    AddColumns(
                        reservation;
                        "voiture_txt";
                        vehicule.Value
                    );
                    Text(dateDebut; "yyyymmdd") <= Text(DatePickerFin.SelectedDate; "yyyymmdd") && Text(dateFin; "yyyymmdd") >= Text(DatePickerDebut.SelectedDate; "yyyymmdd")
                );
                "voiture_txt"
            )
        )
    )​


    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 9.  RE: editform sur plusieurs lignes

    Gold Contributor
    Posted Jul 01, 2021 06:16 AM
    Regarde mon dernier post et dis-moi si ça marche... 😉
    D'ailleurs, du coup tu dois avoir 2 DatePicker désormais : histoire de pouvoir réserver sur une période. J'en ai tenu compte dans ma formule...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 10.  RE: editform sur plusieurs lignes

    Posted Jul 01, 2021 09:11 AM
    merci toujours efficace :D
    dans ta ligne ici :
    Text(dateDebut; "yyyymmdd") <= Text(DatePickerFin.SelectedDate; "yyyymmdd") && Text(dateFin; "yyyymmdd") >= Text(DatePickerDebut.SelectedDate; "yyyymmdd")
                )​

    comment il va remplir ma ligne pour la cellule "date" ?

    ce que j'ai mis fonctionne mais je ne comprends pas pourquoi j'ai dû mettre des datevalue, enfin je sais que c'est suite aux erreurs que me donnent Power Apps !

    DateValue(date) >= Value(datdébut.SelectedDate) && DateValue(date)<=Value(datefin.SelectedDate)
    vais-je obtenir le même résultat ou je dois m'attendre à des surprises ?



    ------------------------------
    laurent boucard
    ------------------------------



  • 11.  RE: editform sur plusieurs lignes

    Gold Contributor
    Posted Jul 01, 2021 11:24 AM
    Ah, je viens de réaliser que la solution que je t'ai donné tiens compte du fait que je pensais que tu allais modifier ta liste des réservations pour y inclure une date de début de réservation et une date de fin de réservation plutôt que de créer une ligne pour chaque jour où un véhicule est réservé (30 jours de réservation = 30 lignes). Ca va vite faire grossir ta liste en nombres d'items.
    A mon avis, vaudrait mieux modifier ta liste des réservations pour y mettre une date de début et une date de fin et utiliser ma formule qui du coup ne te ramènera que les véhicules dispos ("dateDebut" et "dateFin" dans ma formule étant les nouvelles colonnes de date de début et de fin de réservation dans ta liste des réservations).
    Qu'en penses-tu ? Ou tu préfères rester sur : une ligne de réservation par jour ?

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 12.  RE: editform sur plusieurs lignes

    Posted Jul 01, 2021 01:17 PM
    j'ai fait une liste avec une ligne par jour mais les résas peuvent être pour le matin, l'après-midi, la journée ou même la nuit. Sur une ligne je trouve ça pratique à gérer, l'appli montre rapidement la disponibilité des voitures par période. Avec la formule que tu m'as donnée (Forall et Patch) je complètement ces cellules à la volée comme ça la journée et la nuit sont réservées. Donc oui je préfère garder une ligne, d'autant qu'il y aura 5-6 véhicules max et j'épure la liste 48h après le jour de la résa, on n'a pas demandé d'archives.
    donc si je reprends ta solution à ma ligne unique ça donnerait ça ?
    Text(date; "yyyymmdd") <= Text(DatePickerFin.SelectedDate; "yyyymmdd") && Text(date; "yyyymmdd") >= Text(DatePickerDebut.SelectedDate; "yyyymmdd")
                )​​

    et donc par rapport à ça
    DateValue(date) >= Value(datdébut.SelectedDate) && DateValue(date)<=Value(datefin.SelectedDate)​

    ça change quoi ?
    t'aurais pas écrit un livre en français sur Power Apps parce que je suis plus à l'aise avec un livre ( mon âge :D) qu'avec les vidéos, même si j'ai commencé à suivre les tiennes.



    ------------------------------
    laurent boucard
    ------------------------------



  • 13.  RE: editform sur plusieurs lignes

    Gold Contributor
    Posted Jul 02, 2021 11:31 AM
    Ouhlaaa... Je pensais pas que les résas pouvaient se faire à la demi-journée, voire même la nuit (du coup à cheval sur 2 dates). Ca commence à se compliquer là...
    Comment tu gères les demis-journées et les nuits du coup ?

    Très bien le nettoyage toutes les 48h. Ca évite des volumes trop importants...

    Sinon pour répondre à ta question sur les formules : le DateValue() renvoyant une valeur numérique représentant une date, tu peux effectivement l'utiliser pour comparer des dates. Je n'y ai pas pensé sur le coup. Ma technique fonctionne aussi si on mets les dates au format AAAAMMJJ. Donc, pour résumer, le résultat devrait être le même...

    Ah non pas de livre sur Power Apps (et c'est pas dans les tuyaux)... 😁 Et les vidéos, je pense pas en faire des tonnes passke c'est hyper chronophage si tu veux faire un truc un peu propre. Ce que je préfères ce sont les articles (comme le dernier en date par exemple : https://r3dkap.fr/post/comment-creer-vos-listes-sharepoint-pour-vos-applications-power-apps-60cde3aee7328da090060c28).

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 14.  RE: editform sur plusieurs lignes

    Posted Jul 03, 2021 04:55 AM
    ouep par demi journée et nuit pour l'astreinte
    j'ai fait une liste SharePoint avec les colonnes suivantes : véhicule (qui va chercher dans une autre liste), date, matin, soirée, journée, nuit, reserv01; reserv02, reserve03 et notes (c'est juste si un collègue veut laisser une petite note genre "j'ai garé la voiture ici et pas là")

    pour réserver, après avoir choisi une date la galerie propose ce qui est déjà réservé "nom de la voiture" et 3 cases matin, soirée, nuit, si une des cases est réservée le nom du réservant apparait (d'ailleurs j'ai galéré car au début j'avais mis user().Fullname qui me donnait prénom nom mais ça a changé apparemment récemment, donc maintenant je passe par 'Utilisateursd'Office365'.MyProfileV2().givenName & " "& 'Utilisateursd'Office365'.MyProfileV2().surname) si la période est dispo alors la case écrit dispo et en cliquant dessus on réserve rapidement avec la juste la possibilité de rentrer une note donc.
    si la voiture n'a pas été réservée en partie alors on clique sur un + et là on réserve comme on veut une voiture dispo, ça vient remplir le même tableau

    j'ai fait des comparaisons croisées entre journée matinée et soirée

    c'est surement pas orthodoxe :D mais j'ai fait avec ce que je connais et comprends et donc tes conseils pour le filtrage des menus
    donc pour la réservation sur plusieurs jour, l'approche est différente mais je remplis les mêmes colonnes
    j'ai ajouté une partie "mes résas" qui fait apparaitre une galerie similaire mais en cliquant on remet à dispo le véhicule pour une période donnée

    je voulais quelque chose de très intuitif, 2-3 clics et le véhicule est réservé, et au design très simple

    ------------------------------
    laurent boucard
    ------------------------------