Liste sharepoint > 2000 éléments

Étiquetté : 

  • Liste sharepoint > 2000 éléments

    Posté par StevannS sur 8 novembre 2022 à 11h50

    Bonjour, je dois récupérer, dans une liste sharepoint, un ensemble d’éléments récents depuis une power app, mais je me heurte au pb de délégation…

    Quelle est la méthode à retenir pour contourner ce problème ? (fonction last / fisrt / filter / sort…).

    Merci d’avance de vos lumières

    PostID=Y5l7UJIE06Q4MIt

    StevannS a répondu Il y a 12 mois 1 Membre · 3 Réponses
  • 3 Réponses
  • DavidZed

    Membre
    8 novembre 2022 à 12h59

    Hello StevannS ,

    Si tu veux récupérer, par exemple, les 500 derniers éléments modifiés, tu peux utiliser la formule :

    FirstN(Sort('Sample List';Modifié,Descending);500)

    Si tu as des fonctions non délégables, tu peux utiliser cette formule pour peupler une collection :

    ClearCollect('MaCollection';FirstN(Sort('Sample List';Modifié,Descending);500))

    Tu pourras ensuite utiliser cette collection pour tes fonctions non délégables, par exemple dans une galerie :

    GroupBy(Filter('MaCollection';[Tout un tas de filtres complexes]);"Personne";'Créé par')

    CommentID=fn8CsBOJofbOlfW, PostID=Y5l7UJIE06Q4MIt

  • Jean-Rémy

    Membre
    8 novembre 2022 à 13h04

    En synthèse il faut :

    • identifier le nombre d’éléments dans la liste via l’ID

    • définir le nombre d’itérations à faire pour tout parcourir

    • récupérer les éléments par blocs pour alimenter une collection

    Calculer le nombre d’itérations

    Set(n    firstRecord;n    First('Large List')n);;nSet(n    lastRecord;n    First(n        Sort(n            'Large List';n            ID;n            Descendingn        )n    )n);;nSet(n    iterationsNo;n    RoundUp(n        (lastRecord.ID - firstRecord.ID) / 500;n        0n    )n);;nCollect(iterations, Sequence(iterationsNo,0));;

    Alimenter la collection en parcourant les itérations

    ForAll(n    iterations;n    With(n        {n            prevThreshold: Value(Value) * 500;n            nextThreshold: (Value(Value) + 1) * 500n        };n        If(n            lastRecord.ID > Value;n            Collect(n                LargeListSP;n                Filter(n                    'Large List';n                    ID_val > prevThreshold && ID_val <= nextThresholdn                )n            )n        )n    )n);;

    Il y a un bon article qui présente la problématique et détaille l’implémentation : https://poszytek.eu/en/microsoft-en/office-365-en/powerapps-en/overcome-2000-items-limit-using-power-apps-collect-function/

    CommentID=jsrE94NpaFhhZO4, PostID=Y5l7UJIE06Q4MIt

  • StevannS

    Membre
    9 novembre 2022 à 10h18

    Merci à vous 2. Je potasse le sujet sur la base de vos conseils ! Bonne journée

    CommentID=uhoZGP7ZEBcLtBB, PostID=Y5l7UJIE06Q4MIt

Connectez-vous pour répondre.