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 27/05/2008, 09h43   #1 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut Remplir un tableau généré dynamiquement

Bonjour, je suis confronté à un nouveau problème

Je souhaiterais remplir ce tableau

Le nombre de lignes de ce tableau est contenu dans la base de données, et lorsque je clique sur le bouton, le code suivant est exécuté :
Code :
function CTRL4_5::OnClick(eventObj)
{
 
	var nbLigne= parseInt(XDocument.DOM.selectSingleNode("/my:mesChamps/my:NbLignes").text);
	var i = 0; 
	while (i<nbLigne) 
	{ 
		XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
		i++;
	}
}

La création du tableau marche sans aucun problème, mais la ou je bloque c'est ici :

-Je dois à présent remplir les colonnes de ce tableau avec des champs de ma base de données.
La solution que j'envisage (enfin le début de solution ^^) est la suivante :

-Je récupere tous les champs de ma base via un webservice
-Je les concatène dans un champ de mon formulaire
-Avec JScript, je split afin de récupérer tous les champs comme ils sont stockés dans la base.

Le souci, c'est que je ne sait pas comment :
-Spliter en JScript
-Affecter une colonne d'un tableau en JScript

Cependant, si vous voyez une solution plus simple, je suis aussi preneur
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 09h51   #2 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 595
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Salut,

Citation:
Je récupere tous les champs de ma base via un webservice
Comment en XML? c'est dans une source de données secondaire de Infopath?

Comment es-ce structuré?
__________________
"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 27/05/2008, 09h54   #3 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 595
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

pour gagner un peu de temps dans ton code et afin qu'infopath ne réactualise pas a chaque insert tu peux mettre au début de ton code:

Code :
XDocument.View.DisableAutoUpdate();
et a la fin:

Code :
XDocument.View.EnableAutoUpdate();
Tu verras ca ira plus vite.
__________________
"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 27/05/2008, 10h01   #4 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

Non je ferais une requete SELECT qui renverrais un arraylist je pense ou bien je reverrais tout sous forme de chaine concaténée, je ne sais pas trop encore.

J'ai expérimenté C# et XML et c'est vraiment pas évident ^^
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 11h33   #5 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2008
Messages: 44
Par défaut

Bonjour cette solution de travail m'intéresse beaucoup.

Code :
XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
Tu aurait un lien avec des détails concernant l'utilisation de XDocument et de l'insertion, j'avais essayé mais il me manquait une assembly system.xml.link je croit, qui était introuvable. (j'ai prit l'habitude d'utiliser c# et

Potentiellement, on peut arriver à (en fonction du mois choisi)
un tableau de (31, fx mois) date,liste déroulante, en ajoutant ces champs de la même manière ? et les traiter par la suite ? Je pense notamment a empécher l'édition des jours non ouvrables ...

J'ai prit l'habitude d'utiliser
Code :
MainDataSource.CreateNavigator().SelectSingleNode
"/my: blabla/my: blabla ",NamespaceManager).Value / SetValue
Mais je ne peut pas utiliser une node dont le nom est modifié en concatenant des chiffres par ex, même si le champ existe.

Mais c'est beaucoup trop long de créer 31 fois nb de colonnes champ à la main !
Yurnero_ est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 11h45   #6 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 595
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Citation:
Envoyé par Yurnero_ Voir le message
Bonjour cette solution de travail m'intéresse beaucoup.

XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
Euh ca c'est du code de Infopath Version 2003 et pas 2007. Je ne connais pas l'équivalent en 2007 mais tu devrais trouver facilement dans MSDN comment faire.
__________________
"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 27/05/2008, 11h49   #7 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2008
Messages: 44
Par défaut

ok, une confirmation, il y a bien une assembly à ajouter ?

edit : si c'est bien : System.Xml.Linq (in System.Xml.Linq.dll)
je ne l'ai pas sur ma machine de dev, c'est normal ?
Yurnero_ est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 11h52   #8 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

Je ne saurais te répondre

pour ce qui est de 2003, je n'ai pas eu d'assembly à ajouter
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 11h56   #9 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

Ce n'est pas du C# ce code est en JScript !

edit : créé sous InfoPath avec Microsoft Script Editor
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 11h58   #10 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2008
Messages: 44
Par défaut



Code :
if(luck!=0&&help==1()) People.SetHumor(Happy)
else die();
ah ? une bonne nouvelle
la mauvaise, c'est ou ca ? Oo
Yurnero_ est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 12h00   #11 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

lool

en fait je pense aussi passer en c# mais il faut que je procure visual studio avec office tools developper kits, j'aimerais pouvoir utiliser du code c# aussi
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 12h04   #12 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

stop edit :p

bah c'est pas une bonne nouvelle mais bon, tu code avec quoi toi ?

J'ai du mal a cerner Infopath, car j'ai un peu appris sur le tas de moi meme. Mais :

-Je fais le formulaire sous Infopath
-Je remplis des champs avec des webservices en c# développés avec Visual Web Developper Express Edition
-Et j'ai du avoir recours au JScript d'InfoPath pour créer mon tableau automatiquement (avec Microsoft Script Editor) mais Virgul m'a dit qu'on pouvait coder en C# au lieu de JScript en utilisant Visual Studio et Office Developper Tool Kit
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 12h04   #13 (permalink)
Membre à l'essai
 
Date d'inscription: avril 2008
Messages: 44
Par défaut

Ah ceci explique celà, je suis sous infopath 2007, donc je suppose que la limitation c#/ vb n'est pas sur la 2003, et qu'on y codait en Jscript ?

Bon merci, je vais chercher si il y a du c# permettant ca !

edit : visual studio 2005 avec VSTA

Dernière modification par Yurnero_ ; 10/06/2008 à 10h59
Yurnero_ est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 12h07   #14 (permalink)
Membre du Club
 
Avatar de cocosql
 
Date d'inscription: avril 2008
Âge: 19
Messages: 83
Par défaut

On peut coder en C# avec 2007 ?

Ah bah meme pas besoin de se procurer Visual Studio alors

Oui en 2003 tu as soit VBScript soit JScript
cocosql est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/05/2008, 13h31   #15 (permalink)
Expert Confirmé
 
Avatar de virgul
 
Date d'inscription: novembre 2004
Localisation: I Love Techno me voila!!!
Âge: 24
Messages: 1 595
Envoyer un message via MSN à virgul Envoyer un message via Skype™ à virgul
Par défaut

Oula vous avez totalement faux tous les deux désolé...

Le code qui est sur ce poste est du code Jscript avec le modèle object 2003 de Infopath. Avec 2003 on travaille avec msxml3 et avec 2007 on utilise msxml6 je crois.

Donc le syntax diffère ce qui fait que le code jscript modèle object 2003:
Code :
XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
en C# modèle object 2003:
Code :
thisXDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
Ce code en modèle object 2007 (C# et jscript) ne s'écrit pas comme ca. Il s'écrit autrement vous le trouverez surement sur MSDN.

Pour développer en C# on doit avoir Visual Studio que ce soit en 2007 ou en 2003. Note: pour la version 2003 faut avoir minimum la SP1 pour pouvoir coder en C# (actuellement Office 2003 est en SP3).

J'espère que j'ai été clair et que vous comprendrez.
__________________
"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