IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InfoPath .NET Discussion :

Problème calcul Infopath


Sujet :

InfoPath .NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Points : 34
    Points
    34
    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 expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    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."

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Points : 34
    Points
    34
    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 expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Il te suffit de faire:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    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."

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Points : 34
    Points
    34
    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 expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    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."

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Points : 34
    Points
    34
    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 expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    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."

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Points : 34
    Points
    34
    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 expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    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."

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Points : 34
    Points
    34
    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 expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    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."

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

Discussions similaires

  1. Problème Calcul dans formulaire
    Par Lao Pi dans le forum Access
    Réponses: 6
    Dernier message: 08/12/2007, 17h07
  2. Problème calcul sur SQL
    Par madabeer dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/10/2007, 10h18
  3. Problème calcul arithmétique avec des float
    Par tioneb369 dans le forum Langage
    Réponses: 4
    Dernier message: 18/09/2007, 14h35
  4. [Nurbs] Problème calcul
    Par PP(Team) dans le forum Moteurs 3D
    Réponses: 1
    Dernier message: 01/02/2007, 17h06
  5. Problème calculs js
    Par dogi dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 21/02/2006, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo