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 13/05/2008, 15h42   #1 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut Envoi de plusieurs données a la fois

Bonjour à tous ; )

encore un problème :

Je souhaiterais envoyer tout un tableau extensible à un webservice qui insérera le tableau dans une base de données, champ par champ.

Est-ce possible ? Si oui comment, car étant donné que c'est un tableau extensible, je ne peux savoir combien il va y avoir de paramètres dans le webservice d'envoi. L'idéal serait de lui passer un ArrayList directement.

Ce type existe t-il pour InfoPath ?

Merci d'avance
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/05/2008, 08h59   #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,

Ban c'est tout simple tu passe un le xml dans ton webservice via un paramètre.

Et après tu boucle sur ton élément répétitif de ton xml dans ton ws. Puis tu fais tes insert comme tu veux dans ta bdd.

++
__________________
"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 14/05/2008, 09h16   #3 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

oula, je m'y connais pas trop en xml, mais je pense que c'est le moment de m'y mettre ^^

Quand tu dis que je passe en paramètre le xml, je passe le tableau extensible en temps qu'xml c'est ca ?
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/05/2008, 09h21   #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

Citation:
Envoyé par cocosql Voir le message
oula, je m'y connais pas trop en xml, mais je pense que c'est le moment de m'y mettre ^^

Quand tu dis que je passe en paramètre le xml, je passe le tableau extensible en temps qu'xml c'est ca ?
Effectivement Infopath travaille que avec du XML. Donc c'est le bon moment pour s'y mettre.

Ton tableau répétitif c'est déjà du XML t'as cas le sélectionner et l'envoyer.
__________________
"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 14/05/2008, 16h38   #5 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

hmmmm

t'as pas un ptit tuto du genre C# et la classe xml ?

J'ai cherché, j'ai pas trop trouvé :

Il faut utiliser un XmlTextReader pour lire dans le fichier xml passé en paramètre ?

J'ai une erreur vraiment bizarre

Code :
CS0122: 'System.Xml.XmlTextReader.XmlTextReader(System.Xml.XmlNameTable)' est inaccessible en raison de son niveau de protection
 
Pour utiliser un XmlTextReader, j'ai besoin d'un XmlNameTable en paramètre ...


cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/05/2008, 10h29   #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

Moi je passe toujours du XMLDocument c'est plus simple mais certe c'est une vieille classe.

Faudrait que je m'arrange pour optimiser ca une fois

Essaye déjà avec XMLDocument et si ca marche ben tu lis comment faire pour le faire avec les nouveau objet du framework. Et si t'es toujours motivé tu nous faire un petit compte rendu quand tu as fini.

Y a un début d'explication ici: http://faqcsharp.developpez.com/?page=file_xml

Sinon y a pas mal de contenu sur csharp.fr

++

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 16/05/2008, 08h51   #7 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

Bon alors question bête mais qui me bloque :

Ou on doit mettre le fichier xml pour que C# puisse le prendre en paramètre ?

Lorsque j'appelle doc.LoadXml(), en paramètre je dois passer le chemin du fichier ? J'ai essayé, il ne veut pas le prendre.

Et même si c'est le cas, je ne connaitrais pas a l'avance le chemin du formulaire InfoPath, je ne pourrais donc acceder au xml de mon formulaire en "live".

Vraiment Xml me blaze lol
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 09h01   #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

Ben c'est peut-être bête comme réponse mais Infopath a aussi ces objet et méthode qui permette de l'atteindre.

Modèle Object 2003 (C#):

Code :
thisXDocument.DOM.xml
te renvois ta base de données principale en string et ca tu peux le charger dans XMLDocument.

Pour bdd secondaire c'est:

Code :
IXMLDOMDocument2 oDomgetSignExtra = (IXMLDOMDocument2)thisXDocument.GetDOM("tabddsecondaire");
            oDomgetSignExtra.setProperty("SelectionNamespaces", "xmlns:dfs=\"http://schemas.microsoft.com/office/infopath/2003/dataFormSolution\" xmlns:tns=\"ton namespace"");
            oDomgetSignExtra.selectsinglenode("/dfs:myFields/dfs:dataFields/ns2:getSignExtraResponse/ns2:getSignExtraResult/TabEigZb/EigZb/nr").xml;
tns est le namespace généré par défaut par Infopath si tu as d'autre webservices qui n'appartienne pas au même namespace il va te créer des ns1, ns2,...

J'espère que ca sera plus claire.
__________________
"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 16/05/2008, 09h42   #9 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

Donc le code de mon webservice ca va etre en gros :

Code :
[WebMethod]
    public ArrayList InsertAttitudesPositives(XmlDocument TabPP, int NumFiche)
    {
         XmlDocument doc = new XmlDocument();
         doc.LoadXml(thisXDocument.DOM.xml);
         XmlNamespaceManager nsmgr = new XmlNamespaceManager       (doc.NameTable);
        nsmgr.AddNamespace("my", doc.DocumentElement.NamespaceURI);
        ArrayList TabLibellesPositifs = new ArrayList();
        XPathDocument XPathDocu = new XPathDocument (doc);
        XPathNavigator Navigator;
        XPathNodeIterator Nodes;
        Navigator = XPathDocu.CreateNavigator();
        string ExpXPath = "//my:groupe9[my:AttitudesPositives]";
        Nodes = Navigator.Select(Navigator.Compile(ExpXPath));
        if (Nodes.Count != 0)
        {
            while (Nodes.MoveNext())
            {
                TabLibellesPositifs.Add(Nodes.Current.Value);
            }
            return TabLibellesPositifs;
        }
 
        else
        {
            ArrayList NoDF = new ArrayList();
            NoDF[0] = "No Data found";
            return NoDF;
        }
 

J'utilise Xml.Xpath car je n'ai pas trouvé de tuto concluant sur XMLDocument, si vous avez du code avec XMLDocument je suis preneur

Si quelqu'un a un webservice tout simple qui utilise XMLDocument avec un fichier Xml en paramètre, ca serait Noel pour moi !

cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 10h29   #10 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

C'est bon, j'oublie XML


La solution alternative au problème


Dernière modification par cocosql ; 16/05/2008 à 10h53
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 10h33   #11 (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

Ca convient aussi bien comme solution.


P.S. Tu peux corriger ton lien car il est faux. Merci
__________________
"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 16/05/2008, 10h54   #12 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

Lien corrigé
cocosql 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