![]() |
| 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é. | |||||||
|
|||||||
| InfoPath Forum d'entraide sur InfoPath (concevoir des formulaires basés sur XML) |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
|
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 ? |
|
|
|
|
|
#2 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#4 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#5 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
|
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 |
|
|
|
|
|
#6 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#7 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
|
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 |
|
|
|
|
|
#8 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#9 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
|
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); } |
|
|
|
|
|
#10 (permalink) |
|
Expert Confirmé
![]() |
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/tns 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 |
|
|
|
|
|
#11 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
|
Mon Xpath est : /dfs:myFields/dfs:dataFields/tns
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. |
|
|
|
|
|
#12 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#13 (permalink) | |
|
Expert Confirmé
![]() |
Attends je crois qu'il y a un mal entendu quand tu dis:
Citation:
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 |
|
|
|
|
|
|
#14 (permalink) | |||
|
Nouveau membre du Club
![]() Date d'inscription: juillet 2008
Localisation: chti'mi
Âge: 21
Messages: 61
|
Citation:
Citation:
et le xpath de la section a envoyer est "/dfs:myFields/dfs:dataFields/tns Citation:
C'est bien sur le webservice que je dois ajouter ce code ? |
|||
|
|
|
|
|
#15 (permalink) | |||||
|
Expert Confirmé
![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
++ 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 |
|||||
|
|
|
![]() |
![]() |
||
update repeteting table
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|