Addition de champ - InfoPath Dev
in

InfoPath Dev

Addition de champ

Last post 08-17-2006 05:03 AM by arnjea. 4 replies.
Page 1 of 1 (5 items)
Sort Posts: Previous Next
  • 08-16-2006 01:53 AM

    Addition de champ

    Bonjour,
    nouveau problème!
    je veux faire des additions dans mon code.
    j'ai dans une boucle :
    IntMntDGITotal=IntMntDGITotal+XDocument.DOM.selectSingleNode("/my:mesChamps/my:TypeCourrier/my:SectionDGI/my:SectionDestDGI[" & intI & "]/my:txtMontAcompteBenefDGI").text

    ou mon champ "txtMontAcompteBenefDGI" est de type Double

    si je le laisse tel quel, j'ai
    1er boucle
    txtMontAcompteBenefDGI=200,5

    2ème boucle
    txtMontAcompteBenefDGI=50


    Si je laisse IntMntDGITotal=IntMntDGITotal+XDocument.DOM.selectSingleNode("/my:mesChamps/my:TypeCourrier/my:SectionDGI/my:SectionDestDGI["& intI & "]/my:txtMontAcompteBenefDGI").text

    le résultat est 200,550

    quand je mets :
    IntMntDGITotal=IntMntDGITotal+CDbl(XDocument.DOM.selectSingleNode("/my:mesChamps/my:TypeCourrier/my:SectionDGI/my:SectionDestDGI["& intI & "]/my:txtMontAcompteBenefDGI").text)

    j'ai une erreur Type incompatible: 'CDbl'

    sachant que IntMntDGITotal est juste déclarre comme ça
    dim IntMntDGITotal

    J'ai donc besoin d'aide :(
    Merci



  • 08-16-2006 04:58 AM In reply to

    Salut,

    Moi je le ferais pas comme ca car il existe selectnodes qui te permet de séléctionné tous les noeud et après tu peux faire une boucle dessus. Je pense que tes erreurs viennent de la tu dois sélectionné un noeud qui n'existe pas ou tu dois essayé d'additionné une valeur vide... Je sais pas trop

    Ce que je te conseil, c'est de t'inspirer de ce code en C#:

    IXMLDOMNodeList listItem = thisXDocument.DOM.selectNodes("/my:mesChamps/my:TypeCourrier/my:SectionDGI/my:SectionDestDGI");
    int total= 0;
    for(int i=0;i<listItem.lengh;i++)
    {
    total+= int.Parse(listItem.selectsingleNode("my:txtMontAcompteBenefDGI").text);
    }

    thisXDocument.UI.Alert("Le total est de: " + total);


    A la limite tu peux mettre un block try...catch pour éviter les erreur si ce n'est pas un nombre ou qu'il est vide.

    ++

    Thierry
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 08-16-2006 05:33 AM In reply to

    Bon il semblerait que ce soit vraiment un problème de type quand je fais un selectnode... .text il ne veut pas le convertir avec CDbl.

    j'ai donc mis un champ invisible ou je me sert de la fonctionne somme() d'infopath pour mon calcul.
    et dans le code il me suffit de récupérer le champ.

    c'est pas beau mais en comme ça le code ne me sert qu'à faire de la récupe de données pour la mise en page.
    Merci
  • 08-16-2006 05:44 AM In reply to

    C'est bien pour ca que j'ai fait int.Parse pour le transformer en integer.

    Au faite, t'as essayé .nodevalue au lieu de .text? Car si ton noeud est défini en int dans ton schéma pas besoin de le convertir et ca devrait marcher!

    Mais si tu veux garder ta bidouille qui ralenti ton form libre à toi...

    ++

    Thierry
    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 08-17-2006 05:03 AM In reply to

    bon là on m'a augmenté le périmètre donc pas trop de temps mais dès que j'ai un moment, je remodifie ça pour essayer le .nodevalue

    Merci

Page 1 of 1 (5 items)
Copyright © 2003-2019 Qdabra Software. All rights reserved.
View our Terms of Use.