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 05/09/2008, 01h04   #1 (permalink)
Invité régulier
 
Date d'inscription: juin 2005
Messages: 16
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.
BILLANT est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/09/2008, 10h35   #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,

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
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/09/2008, 12h48   #3 (permalink)
Invité régulier
 
Date d'inscription: juin 2005
Messages: 16
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
BILLANT est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/09/2008, 09h25   #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

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
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 14h32   #5 (permalink)
Invité régulier
 
Date d'inscription: juin 2005
Messages: 16
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?
BILLANT est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 15h02   #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

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
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 15h06   #7 (permalink)
Invité régulier
 
Date d'inscription: juin 2005
Messages: 16
Par défaut

oui mais dans ces cas-là, la réponse obtenue est un entier or je veux un décimal!
BILLANT est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 15h10   #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

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
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 15h41   #9 (permalink)
Invité régulier
 
Date d'inscription: juin 2005
Messages: 16
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
BILLANT est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 15h44   #10 (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

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
virgul est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 16h02   #11 (permalink)
Invité régulier
 
Date d'inscription: juin 2005
Messages: 16
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;
BILLANT est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/09/2008, 16h05   #12 (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

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
virgul 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