Précédent   Forum des professionnels en informatique > Dotnet > Général Dotnet > Développement Office System > InfoPath
InfoPath Forum d'entraide sur InfoPath (concevoir des formulaires basés sur XML)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/10/2011, 10h24   #1
Membre éprouvé
 
Homme
Formateur en informatique
Inscription : mai 2007
Messages : 507
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : mai 2007
Messages : 507
Points : 492
Points : 492
Par défaut repérage de la position dans un groupe extensible

Bonjour
J'ai deux niveaux de sections extensibles imbriquées.
J'ai des listes déroulantes dont je veux récupérer des données annexes :

exemple : on sélectionne le client dans la liste et on stocke le mel du contact dans un deuxième champ.

Dans une liste classique "moderne" ça se fait bien par la valeur par défaut recalculée, en filtrant la source secondaire sur le critère codeclient-connexionprincipale = codeclient-sourcesecondaire.

En iph2003 je récupère toujours l'info du premier codeclient choisi (rappel : j'ai des clients multiples).
Je cherche un formule en xpath qui m'extraie le codeclient de la section active.J'ai cherché du côté de
codeclient[position()=count(../preceding-sibling::*)+1]
pas d'erreur détectée par la vérif de syntaxe, mais ça ne remonte rien.

Merci d'avance
__________________
Jean-François Fustec - Consultant Formateur - Sharepoint Infopath Lotus
jff42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 13h23   #2
Membre chevronné
 
Avatar de billout rm
 
MVP InfoPath
Inscription : juillet 2007
Messages : 555
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : MVP InfoPath

Informations forums :
Inscription : juillet 2007
Messages : 555
Points : 612
Points : 612
Bonjour,

De mémoire il existe une fonction current() qu'il est possible d'utiliser sur sur un tableau extensible.

Je rallumes une VM avec InfoPath 2003 dans la journée pour vous confirmer tout cela.

Cordialement
__________________
Rémi MATAYRON
MVP InfoPath

N'hésitez pas à visiter mon blog Infopath
billout rm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 13h56   #3
Membre chevronné
 
Avatar de billout rm
 
MVP InfoPath
Inscription : juillet 2007
Messages : 555
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : MVP InfoPath

Informations forums :
Inscription : juillet 2007
Messages : 555
Points : 612
Points : 612
Bonjour je viens de réaliser un test simple.

A priori, il suffit d'aller chercher le champ en remontant depuis le tableau extensible de plus bas niveau. Pour savoir comment récupérer la valeur, suivez les étapes suivantes:
  • Se placer dans le tableau extensible de pmlus bas niveau,
  • Ajouter une zone d'expression,
  • Utiliser le bouton "fx" pour récupérer le champ codeclient,
  • Tester le formulaire.
Vous verrez que cette zone d'expression récupère correctement le code client de plus haut niveau.

Il faudra ensuite utiliser l'expression visible en cliquant "Modifier une expression XPath (avancé)" afin que vous sachiez l'expression XPath à utiliser.

En espérant que cela vous a aidé.
Cordialement.
__________________
Rémi MATAYRON
MVP InfoPath

N'hésitez pas à visiter mon blog Infopath
billout rm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 15h06   #4
Membre éprouvé
 
Homme
Formateur en informatique
Inscription : mai 2007
Messages : 507
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : mai 2007
Messages : 507
Points : 492
Points : 492
Merci.
La deuxième piste fonctionne pour récupérer l'info brute (le code saisi dans la liste déroulante), mais pas pour utiliser cette info dans le filtre...

C'est le current() qui marche.
Exemple : récupérer dans la connexion Liste-secondaire le champ Nom correspondant à l'élément dont l'IdSociétéSecondaire correspond à ce qui est sélectionné dans la liste déroulante servant à saisir le champ IdSocietePrincipale :
Code :
xdXDocument:GetDOM("liste-secondaire")/dataroot/liste-11/Nom[../IdSociétéSecondaire = current()/my:IdSocietePrincipale]
Procédure
  • construire d'abord avec l'assistant
  • reprendre en modif le filtre,
  • sur le nom du champ clé (IdSocietePrincipale, dans mon exemple), remplacer par une formule
  • passer en mode xpath
  • selectionner tout le chemin getdom()... jusqu'au noeud parent du champ à exploiter
  • remplacer en tapant la fonction current()

Ouf !
amis débutants, courage
Et merci à Rémi d'être toujours là.
__________________
Jean-François Fustec - Consultant Formateur - Sharepoint Infopath Lotus
jff42 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h27.


 
 
 
 
Partenaires

Hébergement Web