Problème dans fonction ForAll

Étiquetté : ,

  • Problème dans fonction ForAll

    Posté par Mickael sur 31 octobre 2023 à 15h48

    Salut à tous,

    j’ai une réaction inattendue dans un ForAll.

    Je m’explique. J’ai un écran sur lequel apparaissent 2 Galeries

    • Gal_DA qui liste les “Demandes”

    • Gal_Articles pour le détails des articles liés à une demande sélectionnée (dans ma Gal_DA)

    Je donne la possibilité à un acheteur de pouvoir supprimer un des articles (dans le cas où il n’y aurait plus de stock pour cet item)

    Lorsque mon item a été retiré de ma Gal_Articles, je fais un ForAll et RenameColumns pour ajouter un ID pour tous les articles restants dans ma source de données (SPList)

    Je fais donc un LookUp dans ma source de donnée sur tous les item ayant ID = ID30 et je patch la colonne “Prix total” de tous ces items en faisant la somme de tous les articles présents dans ma Gal_Articles (donc sans celui ou ceux qui auraient été annulés)

    Pour info “TotalLigne” correspond au prix total pour un article (Qté*PU)

    “PTotal” = somme de tous les TotalLigne de chaque article lié à une Demande.

    Ci-dessous, 4 articles lié à une demande. Le 4e article à été annulé (Le contenu du champ PTotal à été supprimé pour cet article) pour les 3 autres articles le PTotal de chaque articles est égal à 552 mais il n’y a que mon premier article qui est mis à jour, les 2 autres restent avec l’ancien Total (798)

    Je ne comprends pas vraiment pourquoi.

    Je me demande si ça ne vient pas de mon Filter. J’aurais peut-être dû avoir comme source ma liste SP avec une condition qui me permet de faire ressortir uniquement les items voulus? (Au lieu de la Galerie)

    Si vous avez une idée pour m’éclairer, merci bien!

    PostID=T9vSh2cd2jtqtA5

    Mickael a répondu Il y a 7 mois, 4 semaines 1 Membre · 2 Réponses
  • 2 Réponses
  • DavidZed

    Membre
    31 octobre 2023 à 20h45

    Hello Mickael ,

    à mon avis il manque un ThisRecord. ici :

    Dans un Forall, tu appelles les valeurs de l’élément actuellement évalué avec ThisRecord. ou n’importe quel autre préfixe que tu détermine avec As, exemple

    ForAll(Sequence(10) As ThisNumber ; {Value: ThisNumber + 1 })

    Par contre ton modèle de données est assez spécial pour ce type de besoin, as-tu envisagé de faire une liste de demandes (avec le montant total) et un autre liste pour les articles, avec une colonne recherche vers la première. Ca te permettrait de recalculer le montant total avec une formule du type :

    Patch('Liste des demandes' ; varDemande ; {nPTotal: Sum(Filter('Liste des articles','Col recherche de la demande'.Id=varDemande.Id );TotalLigne)n})

    Ce serait moins gourmand en requêtes et plus cohérent au niveau de la donnée 🙂

    CommentID=cS6BjKdP1Z5W1vf, PostID=T9vSh2cd2jtqtA5

    • Mickael

      Membre
      2 novembre 2023 à 9h08

      Salut DavidZed,

      actuellement, ma colonne “PTotal” se trouve dans ma liste des articles (Je trouvais ça logique étant donné que le détails prix, quantité, etc… se trouvent dans cette liste)

      Je ne comprends pas bien le ThisRecord.ID30 (J’ai essayé de modifier la formule et ça ne reconnait pas “ID30 not recognized”)

      Du coup, tu pense que ce n’est pas possible dans l’état que la mise à jour du prix total pour une demande ne se limite pas qu’au premier enregistrement trouvé?

      SubCommentID=703cizM7ZLWXiTi, CommentID=cS6BjKdP1Z5W1vf, PostID=T9vSh2cd2jtqtA5

Connectez-vous pour répondre.