![]() |
| 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) |
|
Invité régulier
![]() Date d'inscription: juin 2005
Messages: 16
|
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 (permalink) |
|
Expert Confirmé
![]() |
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 (permalink) |
|
Invité régulier
![]() Date d'inscription: juin 2005
Messages: 16
|
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 (permalink) |
|
Expert Confirmé
![]() |
Salut,
Il te suffit de faire: Code C# :
//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 (permalink) |
|
Invité régulier
![]() Date d'inscription: juin 2005
Messages: 16
|
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 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#8 (permalink) |
|
Expert Confirmé
![]() |
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 (permalink) |
|
Invité régulier
![]() Date d'inscription: juin 2005
Messages: 16
|
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 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
|
|
#12 (permalink) |
|
Expert Confirmé
![]() |
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 |
|
|
|
![]() |
![]() |
||
Problème calcul Infopath
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|