concaténer un champs dans une section extensible - InfoPath Dev
in

InfoPath Dev

concaténer un champs dans une section extensible

Last post 02-12-2008 07:42 AM by davidair. 5 replies.
Page 1 of 1 (6 items)
Sort Posts: Previous Next
  • 02-12-2008 03:53 AM

    • Zeppo
    • Not Ranked
    • Joined on 02-12-2008
    • Posts 3

    concaténer un champs dans une section extensible

    bonjour à toutes et tous,

    n'étant pas un spécialiste InfoPath(2007) mais ayant certains impondérables(travailler dans une DSI)...

    un projet est arrivé, un formulaire ...;o) "filtrage de la demande"

    je vous explique mon soucis, j'ai donc un formulaire contenant une zone extensible nommée "ChargeRessource" dans cette zone extensible il y a 3 champs (2 listes déroulantes liées + 1 champ text)

    les listes déroulantes se nomment "ChoixService" et "ChoixPersonnel" la liste "ChoixService" me ressort tous les services, et la liste "ChoixPersonnel" (valeur = adresse_mail et nom_complet = nom_personnel) me ressort tous les personnels attachés au service choisi précédement, le champ texte nommé "Charge" quant à lui est un champ servant à définir la charge H/J...

    le problème : 

    si la personne qui renseigne le formulaire sélectionne plusieurs "ChoixPersonnel" est-il possible via une expression Xpath de récupérer dans un champ annexe toutes les "adresse_mail" afin d'envoyer un mail aux différents intervenants ?

    merci d'avance 

  • 02-12-2008 04:27 AM In reply to

    Re: concaténer un champs dans une section extensible

    Salut et bienvenue,

     Donc tu as déjà réussi à faire les cascade de liste déroulante c'es bien.

     Mais alors pour le reste j'avoue ne pas comprendre ton problème peux-tu reformuler?

    ++

    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 02-12-2008 04:36 AM In reply to

    • Zeppo
    • Not Ranked
    • Joined on 02-12-2008
    • Posts 3

    Re: concaténer un champs dans une section extensible

    ok je vais essayer d'être plus clair..

    la valeur issue de ma liste déroulante "ChoixPersonnel" est l'adresse mail de la ressource, donc comme il peut y en avoir plusieurs(Section extensible), j'aimerai récupérer l'ensemble de ces valeurs(concaténer) dans un champ texte que l'on va nommer "RecupMail" avec comme séparateur le point-virgule, en faisant ainsi j'ai juste à récupérer la valeur de mon champ texte "RecupMail" afin de ne générer qu'un seul envoi de mail vers tous les destinataires impliqués...

  • 02-12-2008 04:51 AM In reply to

    Re: concaténer un champs dans une section extensible

    Il y a un moyen de le faire, mais ce n'est pas évident. C'est vraiment une astuce qui utilise un détail d'implémentation de la fonction eval (qui n'est pas propre à XPath mais qui est plutôt une fonction introduite par InfoPath même).  Il y a un bon article sur le blog de l'équipe InfoPath qui décrit la solution (en anglais): http://blogs.msdn.com/infopath/archive/2006/04/05/569338.aspx

    Je résume ici la méthode.

    Supposons qu'on a la structure de données comme suit:

    Personnes
     Personne
      Nom
      Courriel
    ListeDesCourriels

    (Le champ personne se répète)

    Supposons aussi qu'on veut placer la liste des courriels dans le champ ListDesCourriels.
    Afin de recueillir toutes les adresses courriel dans un autre champ, on utilise une valeur par défaut sur le champ ListDesCourriels avec une formule contenant des evals comme suit:

    xdMath:Eval(xdMath:Eval(../Personnes/Personne, 'concat(Courriel, ";")'), "..")

    Voilà ce qui ça fait:

    L'eval intérieur applique l'expression du concat sur chaque personne ce qui produit une liste des nœuds XML chacun contentant une adresse courriel avec point-virgule. Cette liste-là a une racine XML donc en faisant un autre eval avec .. on retrouve cette racine. Finalement, en XML, la valeur d'un nœud est une concaténation des valeurs des nœuds enfants, ainsi on obtient la liste voulue.
    J'espère que j'ai bien compris la question et que la réponse est satisfaisante!


    Je noterais aussi qu'il y a quelques problèmes avec cette approche (par exemple, les filtres ne fonctionnent pas, il y a une longue discussion ici, en anglais: http://www.infopathdev.com/forums/p/7124/26034.aspx) alors si le formulaire contient déjà du code VB/JScript/C# il est souhaitable de programmer cette fonctionnalité au lieu d'utiliser XPath.

    David Airapetyan / Software Services Architect
    Qdabra® Software / Streamline data gathering to turn process into knowledge
  • 02-12-2008 07:02 AM In reply to

    • Zeppo
    • Not Ranked
    • Joined on 02-12-2008
    • Posts 3

    Re: concaténer un champs dans une section extensible

    Merci ça m'a bien aidé... par contre un petit problème existe avec cette fonction, c'est vraiment une bricole mais j'ai galéré une bonne heure dessus...

    lors du choix du champ, celui en gras (je reprends l'exemple du dessus) :

    xdMath:Eval(xdMath:Eval(../Personnes/Personne, 'concat(Courriel, ";")'), ".."), ne pas l'écrire, mais choisir le champ en passant par la fonction "Insérer un champ ou un groupe" il faut impérativement que le champ sélectionner soit souligné dans la vue normale soit, "Modifier une expression Xpath (avancé)" décoché, et en passant par la saisie manuscrite il ne l'est pas...

  • 02-12-2008 07:42 AM In reply to

    Re: concaténer un champs dans une section extensible

    Exacte! J'aurais dû d'ailleurs le mentionner. Désolé, je n'ai pas de version française d'InfoPath donc pour moi c'est difficile parfois d'imaginer comment l'interface se traduira-t-elle :)
    David Airapetyan / Software Services Architect
    Qdabra® Software / Streamline data gathering to turn process into knowledge
Page 1 of 1 (6 items)
Copyright © 2003-2019 Qdabra Software. All rights reserved.
View our Terms of Use.