IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InfoPath .NET Discussion :

tableau extensible à N lignes


Sujet :

InfoPath .NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 108
    Points : 49
    Points
    49
    Par défaut tableau extensible à N lignes
    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

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    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
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 108
    Points : 49
    Points
    49
    Par défaut
    salut
    le code est en Jscript et c'est de l'infopath 2003
    merci

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 108
    Points : 49
    Points
    49
    Par défaut
    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

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Points : 1 663
    Points
    1 663
    Par défaut
    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.

  6. #6
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Salut

    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 ?
    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

  7. #7
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    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é
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  8. #8
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    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)


    comment on fait avec SQL 2005
    tu voulais dire Visual C# ?

    ^^

  9. #9
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.View.ExecuteAction("xCollection::insert", "group1_1");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.View.ExecuteAction("xCollection::insertBefore", "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.

    Attention toutefois avec cette méthode tu ne peux pas insérer une ligne sur une autre vue que celle qui est affiché.
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  10. #10
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    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

  11. #11
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    oui exactement tu fais une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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");
    }
    Je sais pas si ca s'écrit exactement comme ca en Jscript mais ca doit pas être loin de la vérité.
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  12. #12
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    C'est l'heure de la .... QUESTION DE DEBUTANT

    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 ^^

  13. #13
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    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.
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  14. #14
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    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

  15. #15
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Citation Envoyé par cocosql Voir le message
    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
    tranquille c'étais juste pour t'informer...

    Tu y arrives?
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  16. #16
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    lol non, j'ai 3 lignes de code jscript, j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  17. #17
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    bon alors fait un while:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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++;
    }
    La je suis sure de la syntaxe, tu vas pas te pendre pour un stage?
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  18. #18
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    }
    enfin bon j'essaye ton while et je te dis

  19. #19
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Ah du nouveau, int n'est pas défini -_-

    C'EST QUOI CE LANGAGE

  20. #20
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    et oui c'est enfauite comme ca qu'il faut faire:

    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

Discussions similaires

  1. [Débutant] Suppression de lignes dans un tableau extensible
    Par Catarssis dans le forum InfoPath
    Réponses: 7
    Dernier message: 24/11/2012, 12h15
  2. [IP-2010] tableau extensible --> ligne insérée automatiquement
    Par vittirivizzik dans le forum InfoPath
    Réponses: 1
    Dernier message: 06/07/2012, 17h58
  3. [IP-2010] Ajouter des lignes à un tableau extensible sans code
    Par hamzaj dans le forum InfoPath
    Réponses: 3
    Dernier message: 04/10/2011, 16h28
  4. [Script] Numérotation des lignes d'un tableau extensible
    Par cilyneda dans le forum InfoPath
    Réponses: 7
    Dernier message: 12/12/2007, 15h45
  5. Réponses: 3
    Dernier message: 26/09/2005, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo