Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > InfoPath

InfoPath Forum d'entraide sur InfoPath (concevoir des formulaires basés sur XML)

Réponse
 
Outils de la discussion
Vieux 08/08/2008, 13h12   #1 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut update repeteting table

ReBonjour a tous,

J'ai bien progresse depuis mon dernier probleme, et je vous remercie pour votre aide. Mais, la, je me trouve face a un autre probleme.

Pour resumer, j'ai cree un formulaire infopath avec une connection a un webservice afin de creer un select. J'insere donc ma repeting table pour afficher mes donnees. Tout fonctionne bien jusque la !

Ensuite, je suis passee a la phase SUBMIT. J'ai donc cree mes requetes UPDATE sur mon webservice et cela fonctionne bien !

Le probleme est que lorsque j'ai plusieurs blocks avec les memes champs qui se repetent dans ma repeting table, il me renvoie les champs du premier block seulement.
Or je voudrais qu'il me renvoie soit les champs du 1er block, soit les champs du 2nd a l'aide d'un bouton. Il ne peut y avoir un changement que dans un block a la fois.

Auriez vous une idee de comment submitter les informations d'un repeting table, svp ?
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/08/2008, 14h04   #2 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Salut,

Je pense que tu fais ton appel de webservice directement depuis Infopath non?

Essaye plutot de le faire via du code et comme ca il te suffit de séléctionné le noeud répétitif que tu veux et de faire ta requête sur le webservices.

Tu code en quoi?

Perso je n'utilise pas le submit dans Infopath car tu n'as aucun controle dessus s'il y a une erreur tu ne peux rien faire alors qu'avec du code tu fait ce que tu veux de ton retour.

++

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

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/08/2008, 15h10   #3 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut

merci, bien je vais tester avec les noeuds. Je vais trouver des tuto, car je ne connais pas, j'ai juste lu en diagonal quelques tuto !

Merci
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/08/2008, 15h34   #4 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Si tu décris mieux ton problème et ton but je veux bien t'aider?

Mais dis-moi quelle version de Infopath tu utilise et surtout en quoi tu code?

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

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 14h26   #5 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut

Excuse moi, je n'avais pas vu ta reponse. J'utilise InfoPath 2007 et mon webservice est developpe en C#.

Actuellement pour mettre a jour ma base de donnees, j'ai cree une web methods dans mon webservice avec en parametre tous les champs de mon formulaire infopath. Ainsi, quand, j'autorise le submit, j'ai plus qu'a dire a quelle variable appartient le champs infopath, comme sur l'image :





Le probleme c'est que les champs d'infopath sont dans une repeting table. Il y a donc plusieurs block repetant le meme champs avec des valeurs differentes. Chaque a par exemple un id, une cle unique comme le numero de commande, ce qui veut dire que chaque block est different en soit.

Et donc mon probleme, c'est que je n'arrive a enregistrer les donnees seulement du block un. Les autres, il n'y a pas moyen de les sauvegarder.

Alors, je suis en ce moment en train de regarder pour renvoyer un fichier XML a mon webservice et que ensuite ce soit mon webservice ui fasse le travail.

Merci pour ton aide

Dernière modification par padawanette ; 13/08/2008 à 09h14
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 15h16   #6 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Salut,

Désolé mais ton image ne se charge pas.

Dans ton code il suffit de faire:
1. Ajouter une webreference sur ton Webservice. (clic droit sur réference dans l'explorateur de solution)
2. de lui donner un Nom (ex: Save)
3.de copier et de compléter le code suivant:
Code C# :
 
string CurrentLine = //je sais pas où tu la stocke? ;
XPathNavigator lignetoSave = MainDataSource.CreateNavigator().SelectSingleNode("/Root/RepeatNode[@ID='" + CurrentLine + "']/Adr").CreateNavigator();
Save.Save WsSave = new Save.Save();
WsSave.Tamethodepourenreistrer(lignetoSave,param2,...);
 

Conseil: N'envoie pas plus de données qu'il n'en faut au webservice car ca ralentit le form (plus tu envoie de données au webservice plus ca prend du temps).

++

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

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 16h56   #7 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut

Je suis desolee pour l'image, je ne comprends pas pourquoi ca ne fonctionne pas, c'est la premiere fois. Je l'ai supprimee plusieurs fois, mais rien n'y change.
Je ne vais pas m'attarder la dessus.

Sinon, merci pour ton coup de main, mais je ne pige pas trop le code. Peut-etre vais-je te paraitre un peu nulle !

Ma current line est le path du dossier de ma web reference stockee dans mon webservice.

et je dois creer autant de lineToSave que de parametre dans mon formInfopath ? car je ne comprends pas pourquoi il ya un param2. ou alors je dois mettre ici tous mes parametres de ma function. (je pense aue c'est la derniere)

MainDataSource c'est la connexion a ma base de donnees ?


Excuse moi, c'est un peu confu dans ma tete, dsl

Dernière modification par padawanette ; 12/08/2008 à 17h08
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 17h41   #8 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Il s'agit d'un exemple c'est toi qui choisi les param que tu veux donner a ton webservices si tu n'as besoin que d'un paramètre tu n'utilise qu'un param.

CurrentLine = je sais pas comment tu sais quelle ligne tu dois envoyer (tu dois surment avoir un identifiant quelquepart) a toi de séléctionner la bonne en fonction de ce que tu as fais.

Mon exemple est vraiment général.

Pour ton image upload-la sur ce site.
__________________
"Life is short don't forget to inhale"
Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 10h38   #9 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut

voila, dans ma currente line, j'ai mis de Xpath de mon ID comme j'ai pu voir sur certain site.

Si je declare pas "MainDataSource" en XPathNavigator avant, il m'indique un erreur comme koi "MainDataSource" n'existe pas. Sur tous les sites, que j'ai pu rencontrer, je vois des "MainDataSource", mais a quoi correspond-t-elle vraiment ? Ne dois-je pas mettre ma dataSource qui permet d'afficher mon select a la place dans Infopath !

Et enfin, je ne comprends pas pourquoi, tu as mis "/Root/RepeatNode[@id='" + CurrentLine + "']/Adr").CreateNavigator();"
car je n'ai vu nul par ca et que je suis un peu perdue. J'ai surttout vu
MainDataSource.CreateNavigator().SelectSingleNode(xpath, NamespaceManager); comme sur la ligne commentee.


Code :
 
public void formSubmit(string Area, string Model, string Country, string Customer, string ALineActual, string PoffPlanned, string ALineExpected)
    {
 
        string CurrentLine = "/dfs:myFields/dfs:dataFields/tns:Description_customerResponse/tns:Description_customerResult/BLOCKTOTAL/Description/@id";
        XPathNavigator MainDataSource;
 
        XPathNavigator lignetoSave = MainDataSource.CreateNavigator().SelectSingleNode("/Root/RepeatNode[@id='" + CurrentLine + "']/Adr").CreateNavigator();
        // XPathNavigator field1 = MainDataSource.CreateNavigator().SelectSingleNode(xpath, NamespaceManager);
        save.Update WsSave = new save.Update();
 
        WsSave.UPDATE_Description_customer(lignetoSave, Area, Model, Country, Customer, ALineActual, PoffPlanned, ALineExpected);
 
    }
Merci pour ton aide
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 10h49   #10 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Salut,

en faite je ne comprends pas comment tu sais quelle noeud da ta section répétitive tu vas envoyer ? certe tu as un ID mais comment connais tu celui que tu vas envoyé?

quelle est le xpath pour atteindre le noeud que tu veux envoyé? C'est ca? "/dfs:myFields/dfs:dataFields/tnsescription_customerResponse/tnsescription_customerResult/BLOCKTOTAL/Description"


maindatasource est l'objet qui te permet t'atteindre et de naviguer dans les noeud de ta base primaire (pour les source de données secondaire c'est différent). il est déclarer au démarrage du formulaire donc pas besoin de le redéclarer comme tu le fait ici:
Code :
XPathNavigator MainDataSource;
++

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

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 11h06   #11 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut

Mon Xpath est : /dfs:myFields/dfs:dataFields/tnsescription_customerResponse/tnsescription_customerResult/BLOCKTOTAL/Description/@id. Pour le mettre dans mon code, j'ai simplement copier le xpath puis coller dans le code.

Regarde sur la photo tu verras comment est construit ma data source "Description_customer". Cette dataSource est celle qui me permet d'afficher mes donnees et c'est une source secondaire.



D'accord, je comprends mieux le MainDataSource mais cet objet est declarer automatiquement ? Dans infopath, ma connection primaire s'appelle "Main", mais il n'y a rien d'important dedans.
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 11h13   #12 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Donc tu prends cette id pour savoir quelle section répétitive de ta soucre primaire ?

donc puis-je avoir maintenant avoir le XPath qui permet d'obtenir la section a envoyé?

Auter chose:

tout en haut dans ton code tu as lequel de deux qui est déclaré?

Celui-ci:
using Microsoft.Office.InfoPath;
ou celui la:
using Microsoft.Office.Interop.InfoPath.SemiTrust;

Si Maindatasource ne marche pas essaye this.Maindatasource.
On est d'accord tu code bien en C# dans ton form Infopath?
__________________
"Life is short don't forget to inhale"
Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 11h16   #13 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Attends je crois qu'il y a un mal entendu quand tu dis:
Citation:
Le probleme est que lorsque j'ai plusieurs blocks avec les memes champs qui se repetent dans ma repeting table, il me renvoie les champs du premier block seulement.
Or je voudrais qu'il me renvoie soit les champs du 1er block, soit les champs du 2nd a l'aide d'un bouton. Il ne peut y avoir un changement que dans un block a la fois.
c'est ca que je ne comprend pas? tu veux quoi au final? Il est la le malentendu

Comment fait tu pour savoir si tu envoie le 1er, le 2ème ou tous les block? Mon currentline est censé représenté ce choix
__________________
"Life is short don't forget to inhale"
Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 11h26   #14 (permalink)
Nouveau membre du Club
 
Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
Par défaut

Citation:
Donc tu prends cette id pour savoir quelle section répétitive de ta soucre primaire ?
Ce n'est pas source primaire mais secondaire. Et j'utilise l'id pour savoir la section repetitive.

Citation:
donc puis-je avoir maintenant avoir le XPath qui permet d'obtenir la section a envoyé?
le Xpath de mon id est "/dfs:myFields/dfs:dataFields/tnsescription_customerResponse/tnsescription_customerResult/BLOCKTOTAL/Description/@id"
et le xpath de la section a envoyer est "/dfs:myFields/dfs:dataFields/tnsescription_customerResponse/tnsescription_customerResult/BLOCKTOTAL/Description" (c'est le bloc repetitif - Description")


Citation:
tout en haut dans ton code tu as lequel de deux qui est déclaré?

Celui-ci:
using Microsoft.Office.InfoPath;
ou celui la:
using Microsoft.Office.Interop.InfoPath.SemiTrust;
Il n'y a aucun des 2 dans mon webservice en C#. J'ai un Microsoft.Office.InfoPath; dans le code de mon formulaire Infopath en VB (car je n'ai pas d'autres choix). Mais, je ne peux utiliser ce code car il n'est pas suporter car les appareils mobiles tels que les PDA.


C'est bien sur le webservice que je dois ajouter ce code ?
padawanette est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 11h35   #15 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 603
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Citation:
Envoyé par padawanette Voir le message
Ce n'est pas source primaire mais secondaire. Et j'utilise l'id pour savoir la section repetitive.
Ok je comprends maintenant.

Citation:
C'est bien sur le webservice que je dois ajouter ce code ?
Non, Moi j'ai dit:
Citation:
Je pense que tu fais ton appel de webservice directement depuis Infopath non?

Essaye plutot de le faire via du code et comme ca il te suffit de séléctionné le noeud répétitif que tu veux et de faire ta requête sur le webservices.
et je reviens sur ca:
Citation:
Le probleme est que lorsque j'ai plusieurs blocks avec les memes champs qui se repetent dans ma repeting table, il me renvoie les champs du premier block seulement.
Or je voudrais qu'il me renvoie soit les champs du 1er block, soit les champs du 2nd a l'aide d'un bouton. Il ne peut y avoir un changement que dans un block a la fois.
Explique mieux ca!

Citation:
J'ai un Microsoft.Office.InfoPath; dans le code de mon formulaire Infopath en VB (car je n'ai pas d'autres choix). Mais, je ne peux utiliser ce code car il n'est pas suporter car les appareils mobiles tels que les PDA.
Mais alors tu utilise Infopath en mode web si tu peux les visionner sur un PDA?

++

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

Microsoft Office InfoPath MVP - Mon blog
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > InfoPath

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide