Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 33
    Points : 13
    Points
    13

    Par défaut Problème calcul Infopath

    Bonjour,
    j'ai des problèmes pour effectuer des calculs sur Infopath 2007.
    Ma source principale provient de sql server.
    J'ai créé un formulaire qui dialogue avec la table, le souci c'est que pour les calculs, j'ai des soucis avec les décimaux type cela Je n'arrive pas à les résoudre donc j'essaie d'effectuer les calculs à l'aide de C#.
    Seulement, mon chemin est de ce type:
    "/dfs:myFields/dfs:dataFields/d:applicantTable/@name" là où je veux créer mes actions.
    je récupère les champs au même niveau par ../@champ
    mais je ne sais pas comment récupérer les champs au-dessus qui correspondent (datafiels et applicant table sont des groupes répétables).

    Si vous aviez des solutions , même si je ne suis sans doute pas trop clair, je vous remercie d'avance.

  2. #2
    Membre Expert
    Avatar de virgul
    Inscrit en
    novembre 2004
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 624
    Points : 1 558
    Points
    1 558

    Par défaut

    Salut,

    Désolé mais je ne comprends pas ce que tu veux faire dnas ton code ?

    Tu veux faire une boucle sur tout tes éléments pour additionner?

    Tu veux juste voir la valeur de ton élément répétitif précédent a celui en cours?

    ++

    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

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 33
    Points : 13
    Points
    13

    Par défaut

    Tout d'abord, merci de m'aider.
    en fait, ma base provenant de SQL server a cette forme là:
    dataFields(nomtable)
    ->champ1
    ->champ2
    --> applicantTable(nomTable)
    --->champ3
    ---> champ4
    ---> LastTable (nomTable)
    ---->champ5
    ---->champ6
    ---->name

    les tables sont placés dans des repeating sections. Je veux par code calculer champ4 = somme des champs 6 (sum(champ6) sans code devrait le faire mais j'ai des erreurs.)

    j'arrive à faire des calculs sur des champs au même niveau comme name= champ5+champ6 à l'aide des noeuds tels que ("/dfs:myFields/dfs:dataFields/d:applicantTable/@name") mais je n'arrive pas à bien formuler mon code en C# pour le calcul du champ 4.

    j'espère que avoir été plus clair et que tu puisses m'aider grâce à cela.
    merci

  4. #4
    Membre Expert
    Avatar de virgul
    Inscrit en
    novembre 2004
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 624
    Points : 1 558
    Points
    1 558

    Par défaut

    Salut,

    Il te suffit de faire:

    Code C# :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //ici tu séléctionne tout tes noeuds répétitif
    XPathNodeIterator item = MainDataSource.CreateNavigator().Select("tonXPath/applicantTable/LastTable");
     double Total=0;
    while (item.MoveNext())
    {
    double CurrentValue;
    if(double.TryParse(item.Current.SelectSingleNode("champ6").Value, out CurrentValue))
    {
      Total += CurrentValue;
    }
    }
     
    MainDataSource.CreateNavigator().SelectSingleNode("tonXPath/applicantTable/champ3").setValue(Total.toString());
    "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. #5
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 33
    Points : 13
    Points
    13

    Par défaut

    Merci pour la réponse,
    cependant la valeur est toujours entouré de rouge lorsque la valeur de la somme n'est pas un entier malgré le fait que je passe par un calcul.
    J'ai vérifié que les options régionales étaient bien les mêmes entre la base et Infopath...
    je ne vois plus trop comment faire, si tu as une idée?

  6. #6
    Membre Expert
    Avatar de virgul
    Inscrit en
    novembre 2004
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 624
    Points : 1 558
    Points
    1 558

    Par défaut

    Alors fait int.Parse au lieu de double.parse et déclare int Total=0 et non double Total=0 (pareil pour CurrentLine)

    ++
    "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. #7
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 33
    Points : 13
    Points
    13

    Par défaut

    oui mais dans ces cas-là, la réponse obtenue est un entier or je veux un décimal!

  8. #8
    Membre Expert
    Avatar de virgul
    Inscrit en
    novembre 2004
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 624
    Points : 1 558
    Points
    1 558

    Par défaut

    Alors va dans les propriétés de ton champs (infopath) et dans type de données choisi décimal au lieu de nombre entier.
    "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. #9
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 33
    Points : 13
    Points
    13

    Par défaut

    J'ai recréé ma form, et il semble que ça fonctionne??? (avec le code)
    d'où mes 2 questions :
    *est-ce normal de ne pas pouvoir utiliser les fonctions de calcul d'InfoPath? Les problèmes viennent-ils juste avec une database? (parce que j'ai fait des forms sans database et ça fonctionnait bien..on choisit juste le format adequat)
    *dans la forme qui ne fonctionne pas, en tapant directement dans la text box un decimal il indique déjà une erreur! d'où ma question, vaut-il mieux utiliser un webservice pour une base dans sql server?
    En te remerciant pour ton aide

  10. #10
    Membre Expert
    Avatar de virgul
    Inscrit en
    novembre 2004
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 624
    Points : 1 558
    Points
    1 558

    Par défaut

    la première: aucune idée

    La seconde: Oui dans tous les cas c'est plus flexible c'est moins dangereux et c'est plus propre.
    "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. #11
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 33
    Points : 13
    Points
    13

    Par défaut

    pour info, je ne pouvais pas choisir le type dans propriétés du champ quand il est lié à une database juste on peut gérer son affichage dans la texte box souhaitée.
    merci pour les réponses;

  12. #12
    Membre Expert
    Avatar de virgul
    Inscrit en
    novembre 2004
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 624
    Points : 1 558
    Points
    1 558

    Par défaut

    Oui tu est obligé d'aller modifier toi même le fichier schéma pour qu'il accepte des décimaux.

    Car le schéma est fait en fonction des données que tu donne en exemple quand tu lie infopath a la bdd donc des fois ca ne joue pas car tu n'as pas tout les exemple sous la main.

    Donc édite ton schéma XML de ta connection de données et change int en decimal ouvre ton form et le tour est joué.

    ++

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

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
  •