Erreur de syntaxe ?

Étiquetté : , ,

  • Erreur de syntaxe ?

    Posté par Youcef DOUMANDJI sur 16 février 2023 à 14h06

    Bonjour,

    Je cale sur un problème de syntaxe.

    J’ai sur le Onchange d’un Date Picker l’instruction :

    ClearCollect(ColEmargementsFormateur;Filter(‘Sessions formateurs’;Formation.’Nom de la formation’ = VarNomdelaFormation && Date >= StartDate && Date <= EndDate));;

    ForAll(Sequence(N) As DateCounter;Collect(ColEmargementsFormateur;{Date:DateAdd(EndDate;DateCounter.Value;Days);Formation:VarNomdelaFormation;’demie journee’:”Matin”;Signature:Blank()}));;

    Qui devrait me rajouter N enregistrements à ma commection. Le message d’erreur me dit qu’erreur me dit que la fonction ClearCollect contient des arguments non valides.

    Lorsque je supprime la partie commençant par ForAll, la commande fonctionne sans soucis !

    Une idée ?

    Merci d’avance.

    PostID=YpR19o4wz2Z92Ua

    Youcef DOUMANDJI a répondu Il y a 11 mois, 3 semaines 1 Membre · 7 Réponses
  • 7 Réponses
  • Jonathan Copin

    Membre
    16 février 2023 à 15h39

    Ta formule ForAll ne peut fonctionner dans ce cas que si :

    • ‘Formation’ et ‘demie journee’ sont des champs texte uniquement

    • Tous tes champs sont bien orthographiés

    Dans ce genre de cas j’ai tendance à simplifier au maximum en supprimant tous les champs de la collection et en les rajoutant un par un pour voir si l’erreur vient d’un des champs.

    Quand tu fais le ClearCollect uniquement il faut voir quel est le format des champs qui ressortent

    CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

    • Youcef DOUMANDJI

      Membre
      16 février 2023 à 16h05

      Merci Jonathan pour votre retour.

      Je vais regarder cela.

      SubCommentID=KOyN4FJYEtlEnaN, CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

    • Youcef DOUMANDJI

      Membre
      16 février 2023 à 16h40

      Jonathan,

      Effectivement si je transforme la formule en :

      ClearCollect(ColEmargementsFormateur;Filter(‘Sessions formateurs’;Formation.’Nom de la formation’ = VarNomdelaFormation && Date >= StartDate && Date <= EndDate));;

      ForAll(Sequence(N) As DateCounter;Collect(ColEmargementsFormateur;{Date:DateAdd(EndDate;DateCounter.Value;Days);’demie journee’:”Matin”;Signature:Blank()}));;

      Là je n’ai plus d’erreur de syntaxe mais la colonne ‘demie journée‘ de ma collection reste vide !!?

      D’ailleurs je ne comprends pas pourquoi je n’arrive pas à repopuler la collection avec les mêmes colonnes. Est-ce que la structure de la collection a changé ? Est-ce à cause du ForAll ?

      Par ailleurs je n’ai pas bien compris ce que vous voulez dire par “Quand tu fais le ClearCollect uniquement il faut voir quel est le format des champs qui ressortent

      En fait j’ai vraiment besoin d’ajouter N enregistrements de la même formation pour les N dates qui suivent la date de fin (EndDate) de ma sélection.

      Merci encore.

      SubCommentID=porXGSY0kHsZd4S, CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

    • Jonathan Copin

      Membre
      16 février 2023 à 16h51

      En double cliquant sur le nom de ta collection tu vas pouvoir afficher son contenu dans l’éditeur de formule. Cela permet de vérifier le type et le nom des colonnes :

      Un type [Enregistrement] ne peut pas être remonté de la même manière par exemple :

      • Un champs de type recherche se notera ‘colonne recherche’:{Value:”Ma valeur”}

      • Un nombre –> ‘Colonne Nombre’: 1

      • Un texte –> ‘Colonne texte’: “Texte”

      • etc.

      Le nom des colonnes dans une collection peut changer car sur une liste SharePoint par exemple c’est le nom interne de la colonne qui va remonter (qui peut être différent en fonction de l’utilisation de certains caractères)

      SubCommentID=lYxJbv6kgEeKlp9, CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

    • Youcef DOUMANDJI

      Membre
      16 février 2023 à 17h20

      Désolé mais je n’ai pas bien saisi tes explications sur les types d’enregistrements

      SubCommentID=RPOQwU6d7wSlrRZ, CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

    • Jonathan Copin

      Membre
      17 février 2023 à 14h01

      En fonction du type de champs de tes colonnes il faut les déclarer différemment :

      ForAll(n    Sequence(3) As DateCounter;n    Collect(n        ColEmargementsFormateur;n        {n            //Colone de type nombren            Nombre: 1;n            //Colonne de type choixn            Choix: {Value: "Choix 1"};n            //Colonne de type personnen            Personne: {n                DisplayName: "Display name de l'utilisateur";n                Claims: "i:0#.f|membership|" & Lower("adresse@user.com")n            };n            //Colonne de type texte mais avec un nom interne différentn            //à cause de l'espace et du "é"n            //"Titre spécial" --> Nom interne dans SharePoint : Titresp_x00e9_cialn            Titresp_x00e9_cial: "Un titre de colonne très spécial"n        }n    )n);;

      On voit que le nom de ma colonne “Titre spécial” remonte différemment lorsqu’il est “collecté” et également que en fonction du type de la colonne la méthode change. Pour les champs “Texte” pas besoin de guillements si tu utilises des variables.

      C’est le nom interne SharePoint

      SubCommentID=agpk8CDWrhB1qoM, CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

    • Youcef DOUMANDJI

      Membre
      17 février 2023 à 15h14

      Merci Jonatan, c’est plus clair…

      SubCommentID=OtQMUKNqW5m1mi1, CommentID=npXhD121k3zzr73, PostID=YpR19o4wz2Z92Ua

Connectez-vous pour répondre.