# Dotnet > Gnral Dotnet > Dveloppement Office System > InfoPath >  exporter un formulaire au format HTML avec un Controle type BOUTON

## olivierlem

Bonjour,

Je cherche  enregistrer un formulaire InfoPath au format MHT et cela  partir d'un controle de type Bouton.

Mon contrle Bouton fait dj trois actions :

Envoyer via uen connexion de donne : connexion principale (qui permet d'enregistrer mes champs de formulaire dans une base de donnes)

Envoyer via une connexion de donnes : Envoi de bibliothque Sharepoint (qui permet d'enregistrer mon formulaire dans ma bibliothque de documents Sharepoint)

Fermer ce formulaire : Invite (qui permet de fermer le formulaire aprs les actions prcedentes)



Ce que je souhaite c'est galement envoyer mon formulaire dans la bibliothque Sharepoint mais au format MHT (ou HTML ?)afin qu'il soit lisible de tous dans un navigateur (alors que les formulaires ne sont visibles, modifiables et accessibles que par les personnes ayant InfoPath sur leurs postes)

Comme cette commande n'est pas standard j'imagine qu'il faut ajouter du code (un script) sachant qu'il est possible depuis le menu fichier de faire exporter vers Web ce qui me gnre bien le fichier MHT ou MHTML ???


Merci d'avance pour les informations que vous pourriez m'apporter !

----------


## virgul

Salut,

et bienvenue sur dev.net.

Si tu est prt  payer une facon simple de faire ce que tu veux est:

http://www.cavedigital.com/?infopathWebPreviewer=1

Sinon c'est vrai il va falloir coder. Quel langage connais-tu ou voudrais-tu utiliser? En script y a Jscript ou Vbscript et en .Net (ncessite Visual studio) C# ou VB.Net?

Attention tu ne peux programmer un formulaire que dans un de ces 4 langages.

++

Thierry

----------


## marabout

Quelle version d'Infopath utilises-tu ? car dans la version 2007 tu peux  publier directement tes formulaires sur le web, les utilisateurs n'ont plus besoin de infopath sur leur machine.
http://office.microsoft.com/fr-be/in...520091036.aspx

----------


## Alain_f

Bonjour  tous,

J'ai lu le post initial. Et j'ai  peu prt la meme problematique.
Mais j'ai beau fouiller infopath  fond, rien de natif apparemment ne permet de faire ca.
Mon objectif est lgrement diffrent, mais le besoin se rejoint:
Je voudrais tre capable de crer un fichier xml dans un rpertoire, en mme temps que publier ce fichier dans une bibliothque sharepoint.
Publier ne pose pas de soucis, mais crer le fichier... j'imagine qu'il faut du code ?

merci de votre aide,

PS: si je trouve une piste (nous recherchons activement) je posterais la solution ici.

----------


## virgul

Ok je vois mais comment concrtement tu veux faire pour entretenir tes 2 fichiers  jour?

Juste ta logique que tu pense appliquer?

C'est a un instant T que tu veux faire les sauvegarde ou c'est au fur et a mesure? Si tu pensais au fur et a mesure c'est pas impossible mais ca sera l'immense bordel et ca risque d'tre vraiment lent...

----------


## battosaino

Bonjour Virgul, je travail avec Alain_f. Je me permet donc de rpondre  sa place .

L'objectif est de faire un enregistrement  un instant T. Le formulaire ne sera donc plus modifi. 

Le scnario simplifi serait le suivant:

1. Un utilisateur remplit les diffrents champs du formulaire, puis valide celui-ci  l'aide du bouton;

2. Ce bouton permet: a) l'envoie vers une bibliothque Sharepoint
                              b) l'enregistrement en format xml (l'idal serait de pouvoir spcifier dans le code, les balises qui figureront dans ce fichier xml).
                              c) l'envoie de ce nouveau fichier vers un rpertoire rseaux ou FTP 

J'espre t'avoir clair...

J'oubliai, le langage que nous voulons utilis est le javascript

Merci d'avance.

----------


## virgul

Il est publi sur le sharepoint le formulaire?

Es-il en autorisation: "controle totale" (full trust) et Sign numriquement a l'aide d'un certificat?

----------


## battosaino

> Il est publi sur le sharepoint le formulaire?



Oui le formulaire sera publi dans un bibliothque de formulaire Sharepoint (voir poit 2.a )





> Es-il en autorisation: "controle totale" (full trust) et Sign numriquement a l'aide d'un certificat?


Les utilisateurs ne pourront pas modifier le modle de document (je ne sais si je rpond  ta question...?)

Pour ce qui est de la signature numrique, je suppose que lorsque qu'il s'agit d'une fonction native... quelqu'il en soit ce n'est pas une option ncessaire.

----------


## virgul

ouvre ton formulaire en mode publi (depuis sharepoint) va dans fichier->autorisation 

qu'es-ce qui est marqu?

si c'est accs illimit le formulaire est full-trust et donc sign la on peux faire ce que tu veux  mais il faut du code (c# ou VB.Net) car en Jscript ou Vbscript je sais pas si c'est possible en tout cas pas avec la mme flexibilit...

Sinon faut que ca le soit..

----------


## battosaino

> ouvre ton formulaire en mode publi (depuis sharepoint) va dans fichier->autorisation 
> 
> qu'es-ce qui est marqu?


Etant donn que je suis l'auteur du formulaire, j'ai la possibilit de choisir le niveau de scurit du formulaire. Je l'ai laiss tel qu'il est nativement. A savoir une autorisation par "Domaine".




> si c'est accs illimit le formulaire est full-trust et donc sign la on peux faire ce que tu veux  mais il faut du code (c# ou VB.Net) car en Jscript ou Vbscript je sais pas si c'est possible en tout cas pas avec la mme flexibilit...
> 
> Sinon faut que ca le soit..


J'ai cependant une contrainte de taille... je ne dispose pas des environnement de programmation et matrise encore moins les langages que tu as cits... je devrai donc me contenter des langages de script.

----------


## battosaino

Sur un des posts du 12/07/07, tu as spcifi une ligne de code qui permet de rcuprer le texte d'un champ: 

XDocument.DOM.SelectsingleNode("tonexpressionXPathdetonchemin").text

Est-ce qu'il n'est pas possible, avec les mthodes fournies avec le modle de classe XDocument, de rcuprer ce texte dans une variable, ou mieux encore rediriger ce texte dans un fichier .xml?

Mon ide serait de pouvoir rcuprer ainsi le contenu de divers champs, insrer tout ceci dans un fichier, ceci  chaque fois qu'un nouveau formulaire est dit et valid  l'aide du bouton programmer.

Cela ncessite-t-il forcement un dveloppement C# ou .net? 

PS: aurais-tu un exemple d'implmentation de la ligne prcite s'il te plat?

----------


## virgul

```
string strChamp1 = XDocument.DOM.SelectsingleNode("/my:mesChamps/my:Champ1").text;
```


si ton xml  cette structure:


```

```


Donc strChamp1 = toto.

Oui c'est tout a fait possible mais pour enregistrer un fichier sur le disque il faut un accs totale domaine ne suffit pas.

Tu parles de contrainte de taille peut-tu m'en dire plus?

Pour ce qui est du langage moi je travaille en C# et donc le Jscript n'est pas ma spcialit donc je te laisse voir comment tu dois procder pour sauvegarder un fichier sur le disque. 

Attention Jscript n'est pas Javascript!!!!

----------


## battosaino

Bonjour Virgul et merci pour ta rponse.

La contrainte dont je parle est le fait que nous ne disposons pas de la plaforme .net, de plus nous disposons pas des ressources ncessaires pour le codage dans un  langage avanc. C'est pour cela que nous restons dans l'optique d'utiliser un langage de script. 
D'ailleurs contrairement  ce que j'avais crit prcdement, nous utiliserons plutt VBscript... mea culpa.

J'ai trouv comment crer un fichier en vbscript, je cherche maintenant  rcuprer le contenu de mes balises et le copier dans un fichier (ce qui ne devrait pas pos de problme en utilisant la mthode selectSingleNode(cheminXML).text). 

La question sera maintenant de crer ce fichier dans un rpertoire distant...
have you got an idea?

----------


## battosaino

Bonjjour  tous.

Lors de l'implmentation du code suivant:

Sub CTRL2_5_OnClick(eventObj)
' Tapez votre code ici

	string body = XDocument.DOM.selectSingleNode("/my:mesChamps/my:body").text


	Set FSys = CreateObject("Scripting.FileSystemObject")
	Set Fictest = FSys.CreateTextFile("e:\fichiertest.xml")
	With Fictest
	.writeLine "Ce test fonctionne"
	.write "Pas de saut de ligne"
	.write body
	.writeLine "Ce test fonctionne"
	End With
	Msg = "Test russi"
	MsgBox(Msg)
End Sub

Infopath me retourne l'erreur suivante:

"Nombre d'arguments ou affectation de proprit incorrects: 'string' ", ceci pour la ligne _string body = XDocument.DOM.selectSingleNode_

o_O, une chane de caractre correspond pourtant bien  un type "string", ou me trompe-je?

----------


## virgul

Il ou le Dim ?

----------


## battosaino

Lorsque je rajoute le "Dim" comme suit:

Sub CTRL2_5_OnClick(eventObj)
' Tapez votre code ici

	Dim body as string
	body = XDocument.DOM.selectSingleNode("/my:mesChamps/my:body").text


	Set FSys = CreateObject("Scripting.FileSystemObject")
	Set Fictest = FSys.CreateTextFile("e:\fichiertest.xml")
	With Fictest
	.writeLine "Ce test fonctionne"
	.write "Pas de saut de ligne"
	.write body
	.writeLine "Ce test fonctionne"
	End With
	Msg = "Test russi"
	MsgBox(Msg)

End Sub


Il ne veut mme pas m'diter un aperue, l'erreur est alors:

_"InfoPath ne peut pas ouvrir le formulaire slectionn en raison d'une erreur dans le code de ce formulaire.
L'erreur suivante s'est produite :

Fin d'instruction attendue
Fichier :script.vbs
Ligne:22
	Dim body as string

"_

----------


## virgul

Ecoute moi je ne connais pas du tous le vbscript a la limite pour jscript je peux un peux t'aider...

Alors un petit conseil va chercher sur internet un tuto sur Vbscript et regarde comment dclarer car a voir c'est une erreur de dclaration

Sinon pour afficher quelquechose un message box si tu veux tu peux faire

XDocument.UI.Alert(string)

----------


## battosaino

Rassures toi pour ce qui est de chercher sur internet, je ne fais que a... et la dclaration de variable ce fait semble-t-il comme a... tous les tutos que j'ai vu vont dans ce sens tout du moins...

Ma devise est de ne pas attendre... mais quand je ne sais po... ban je pose la question. 

En tout cas merci de rpondre parcequ'il semble qu'il n'y que toi qui rponde sur le forum.

----------


## battosaino

Alors pour information, au cas o une autre personne tomberait sur le mme type d'erreur:

Il ne faut pas indiquer de type  la variable lors de sa dclaration. C'est  dire qu'au lieu de noter: "Dim body As String", et bien il faut taper: "Dim body", puis lui attribuer la valeur que l'on veut. 

Je trouve ce fonctionnement un peu trop permissif m'enfin bon a fonctionne pour moi...

Maintenant, quelqu'un peut-il me dire si ma syntaxe pour l'utilisation de ma variable 'body' est la bonne avec la fonction .write, s'il vous plat?

_Set FSys = CreateObject("Scripting.FileSystemObject")
	Set Fictest = FSys.CreateTextFile("e:\fichiertest.xml")

             With Fictest
	        .write Bod
	End With

             Msg = "Test russi"
	MsgBox(Msg)_

----------


## battosaino

```

```

Avec ce code je dsir rcuprer le texte que je rentrerai dans le champs "body" de mon formulaire. 
Lorsque je fais le test, rien ne m'est renvoy, tout se passe comme si la variable "Bod" ne rcupre rien. A moins que je n'emploie mal l'instruction de rcupration de la valeur d'un champ...

Could you help me?

----------


## romaik

tu as essayer de faire un XDocument.UI.Alert(Bod) afin de voir ce qu'il y a d'ecrit dans Bod ?
Si tu as la bonne donne, c'est que l'erreur est apres, sinon c'est que la variable est mal declare.
Je suis pas un expert VB donc je peux pas vraiment t'aider plus que ca  ::?:

----------


## battosaino

J'ai fait mieux, j'ai fait un test:



```

```

Et a ne passe pas... a doit venir de ma dclaration de variable

----------


## virgul

Voici les ressource Infopath a disposition...

moi je sais pas mais:



```

```

Ca ca marche alors regarde mieux le nom de tes balises et n'oublie pas que xml est case sensitive comme VBScript...

++

Thierry

----------


## battosaino

Merci pour ta rponse virgul.

----------

