Salut,
j'aimerais créer un tableau extensible: à partir d'un nombre N par exemple 3 stocké dans ma base access,afficher dans mon tableau extensible N lignes c'est à dire 3 lignes dans mon exemple. je suis débutant sur infopath
merci
Version imprimable
Salut,
j'aimerais créer un tableau extensible: à partir d'un nombre N par exemple 3 stocké dans ma base access,afficher dans mon tableau extensible N lignes c'est à dire 3 lignes dans mon exemple. je suis débutant sur infopath
merci
Salut,
Tu peux soit:
Créer le xml corespondant et l'ouvrir avec ton formulaire.
Mais dans ton cas je pense que tu devras soit passé par un bout de code. Vbscript, jscript, c#ou VB.Net? Infopath 2003 ou 2007?
Mais si tu m'en disais un peu plus ca serait plus facile de t'aider
++
Thierry
salut
le code est en Jscript et c'est de l'infopath 2003
merci
j'ai trouvé comment faire:il faut codé en jscript en faisant une boucle de 1 à N à chaque fois ajouter une ligne correspondant au champ de la table.
maintenant j'ai un autre problème, un champ de ma table extensible est un dropdownlist dont je le remplis par des données provenant de ma base access, je choisis un élément du dropdownlist tous les autres champs de la table sont pré-remplis or je ne veux que pour la ligne en question.
merci
Crée une connexion de données en réception et dans le menu déroulant t'utilises la connexion pour récupérer tes données, tu sélectionnes quel champ tu veux récupérer et t'utilises le bouton Règles en Définir un champ (ou un truc du genre) tu dis quel champ tu veux remplir et dans la valeur tu récupères la colonne de ta BDD en filtrant par rapport au nom du menu déroulant.
J'espère avoir été clair et que ça t'aidera.
Salut :mrgreen:
Désolé d'up ce post, mais je rencontre un problème similaire.
Je dois récuperer dans ma BD le nombre de lignes que comportera mon tableau.
Comment puis-je faire ?
Sachant que le tableau devra se créer après avoir cliqué sur un bouton, donc est-ce que je fais appel à un webservice ?
:arrow: ca me semble compliqué car je dois créer le tableau dans Infopath, il doit donc apparaître physiquement dans le formulaire, chose qui, je crois n'est pas possible via un webservice.
Je dois donc utiliser le Microsoft Script Editor pour créer ce tableau lorsque l'on clique sur le bouton ?
Le problème : je ne m'y connait pas du tout dans ce langage. Donc si vous aviez quelques pistes, je vous serez reconnaissant ;)
Infos Supplémentaires :
-J'utilise InfoPath 2003
-Web Services en C#
-Base de données SqlServer 2005
Merci beaucoup :roll:
Si ton Webservices renvoit les données en XML et que tu lie le résultat de ce ws a un tableau répétitif ben ca ce fait tout seul.
Si tu veux faire un query via le code faut utiliser executeAction et données le nom du champ que tu veux insérer ca se trouve dans les propriétés du champs (infopath design, task pane, source de donées) dernier onglet normalement t'as un nom qu'es donnée genre: sectionrepet_23.
Bref si tu veux pas trop faire de code tu trouveras facilement sur le net comment on fait avec SQL 2005 pour renvoyer des xml a la place d'array ou de je sais pas quoi.
Une fois que c'est fait lie le avec Infopath via l'assistant puis affecte lui une truc répétitif (tableau ou section). puis tu met un bouton tu lui affecte une règle qui aurra comme but de query ton webservice et le tour est joué
Je dois donc créer un webservice qui prend en paramètre un int qui sera le nombre de lignes de mon tableau et qui renvoie un fichier xml qui sera le tableau, c'est ca ?
Ce que je ne comprend pas c'est qu'est-ce que doit contenir le corps de ce webservice ?
Une création de tableau xml qui à n lignes ? (n étant le paramètre)
tu voulais dire Visual C# ?Citation:
comment on fait avec SQL 2005
^^
Désolé j'ai mal compris non bon alors fais ca avec du code jscript (comme ca tu dois pas installer Visual Studio pour faire du Visual C#) via:
Code:XDocument.View.ExecuteAction("xCollection::insert", "group1_1");
Le num que tu trouve dans les propriétés te renvoit une erreur esssaye en diminuant ou en augmentant de 1 ce num.Code:XDocument.View.ExecuteAction("xCollection::insertBefore", "group1_1");
Attention toutefois avec cette méthode tu ne peux pas insérer une ligne sur une autre vue que celle qui est affiché.
Je peux pas faire appel à une fonction qui créé directement un tableau de n lignes?
Et sinon pour ton exemple, comment je fais pour passer n, nombre qui se trouve dans ma bd ?
Je le récupere dans un champ sous InfoPath et je donne en paramètre ce champ dans le Script ?
Merci de ton aide Virgul ;)
oui exactement tu fais une boucle:
Je sais pas si ca s'écrit exactement comme ca en Jscript mais ca doit pas être loin de la vérité.Code:
1
2
3
4
5
6 var nbLigne= int.parse(XDocument.selectsinglenode("tonexpressionXPath").text); for(int i;i<nbLigne;i++) { XDocument.View.ExecuteAction("xCollection::insert", "group1_1"); }
C'est l'heure de la .... QUESTION DE DEBUTANT :traine:
comment on récupere le chemin XPath d'un champ dans la source de données ?
Je suis en InfoPath 2003 :) et j'ai pas le clic droit / copier XPath de la version 2007
Je pourrais peut etre le récuperer en utilisant le champ formule, dans règles, et je transforme le chemin en expression xpath, mais il doit y avoir un moyen plus rapide ^^
non a part si toi tu connais ton schéma et donc tu sais comment il est construis.
Mais sinon c'est bien le seul moyen de faire en 2003.
Mais bon tu pourrais aussi travailler sur 2007 et publier pour du 2003 comme je fais actuellement et donc tu aurais cette fonction et plein d'autre.
C'est juste que dans l'entreprise ou je fais le stage ils n'ont pas office 2007 donc je travaille avec ce que j'ai ;)
lol non, j'ai 3 lignes de code jscript, j'ai une erreur :
Code:
1
2
3
4
5
6
7 InfoPath ne peut pas ouvrir le formulaire sélectionné en raison d'une erreur dans le code de ce formulaire. L'erreur suivante s'est produite : ';' attendu Fichier :script.js Ligne:25 for(int i=0;i<=nbLigne;i++)
je vais me pendre et je reviens xD
bon alors fait un while:
La je suis sure de la syntaxe, tu vas pas te pendre pour un stage? :aie:Code:
1
2
3
4
5
6
7
8 var nbLigne= int.parse(XDocument.selectsinglenode("tonexpressionXPath").text); var i = 0; while (i<nbLigne) { XDocument.View.ExecuteAction("xCollection::insert", "group1_1"); i++; }
Non mais c'est au dessus du stage : 2 ans d'études d'informatique pour ....
une erreur de ';' alors que "normalement" mon code est juste
enfin bon j'essaye ton while et je te dis ;)Code:
1
2
3
4
5
6
7
8
9 function CTRL4_5::OnClick(eventObj) { var nbLigne = int.parse(XDocument.selectsinglenode("../../../my:NbLignes").text); for(int i=0;i<=nbLigne;i++) { XDocument.View.ExecuteAction("xCollection::insert", "group2") } // Tapez votre code ici }
Ah du nouveau, int n'est pas défini -_-
C'EST QUOI CE LANGAGE :mur: :lol:
et oui c'est enfauite comme ca qu'il faut faire:
Code:parseInt(tonStr);