Comment charger dynamiquement des données dans un formulaire InfoPath

Traductions disponibles Traductions disponibles
Numéro d'article: 896451 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit trois méthodes pour charger dynamiquement des données dans un formulaire Microsoft Office InfoPath. Vous pouvez utiliser l'événement OnLoad , automatiser l'objet ExternalApplication d'InfoPath ou créer une page ASP. Exemples de code sont fournis.

INTRODUCTION

Cet article explique comment charger dynamiquement des données dans un formulaire Office InfoPath.

Plus d'informations

Un formulaire InfoPath est un fichier XML. Le fichier contient les données de formulaire et XML de traitement des instructions qui indiquent à l'Explorateur Windows ou Microsoft Internet Explorer à laquelle appartient l'application les données XML.

Vous pouvez charger dynamiquement des données dans InfoPath en utilisant l'une des trois méthodes suivantes :
  • Utilisez l'événement OnLoad .

    Dans l'événement OnLoad , vous pouvez appeler une page ASP ou une autre source de données externes pour extraire les données et pour le copier dans le formulaire.
  • Automatiser l'objet ExternalApplication d'InfoPath.

    Cette méthode crée un nouveau formulaire basé sur les données à partir d'une source externe.
    note Le paramètre contrôles ActiveX non marqués comme sécurisés d'initialisation et de script dans Internet Explorer doit indiquer demander ou Activer pour cette méthode à employer.
    Les données de la source externe doivent également être XML InfoPath valide.
  • Créez une page ASP.

    La page ASP renvoie des données XML dans le format correct pour InfoPath ouvrir un fichier de formulaire en tant que. Les données XML contient une référence pour le modèle InfoPath Form dans lequel les données doivent être affichées. InfoPath peut afficher les données sans problème.

Créer un nouveau répertoire virtuel

  1. Démarrez Microsoft Internet Information Services Manager.
  2. Développez le répertoire sites Web dans l'arborescence.
  3. Cliquez avec le bouton droit sur le site Web où vous souhaitez créer le nouveau répertoire virtuel, pointez sur Nouveau , puis cliquez sur répertoire virtuel .
  4. Suivez les étapes de la création de répertoire virtuel Assistant pour créer un nouveau répertoire virtuel.

    note Vous devez accorder autorisation d'écriture sur le répertoire virtuel.

Créer un formulaire InfoPath

InfoPath 2007

  1. Démarrez InfoPath. Dans le volet gauche, cliquez sur Créer un modèle de formulaire .
  2. Sous créer un nouveau , cliquez sur pour sélectionner l'option modèle de formulaire , cliquez pour sélectionner l'option blanc et puis cliquez sur OK .
  3. Sous Tâches de création , cliquez sur contrôles .
  4. Cliquez deux fois sur la zone de texte pour ajouter deux texte zone de contrôle à l'écran.
  5. Enregistrez le formulaire.
  6. Dans le menu Fichier , cliquez sur Publier .
  7. Dans l'Assistant Publication, cliquez sur suivant . Cliquez sur vers un emplacement réseau , puis cliquez sur suivant .
  8. Dans le chemin d'accès et le nom modèle formulaire zone, tapez l'URL du répertoire virtuel que vous avez créé.
  9. Dans la zone Nom du modèle de formulaire , tapez twofield.xsn .

    note Assurez-vous que l'URL est semblable au suivant :
    http:// myServermyVirtualDirectory /twofield.xsn
  10. Cliquez sur suivant , cliquez sur Publier et puis cliquez sur Fermer .
  11. Fermez InfoPath.

InfoPath 2003

  1. Démarrez InfoPath. Dans le volet gauche, cliquez sur Créer un formulaire .
  2. Sous créer un formulaire , cliquez sur Nouveau formulaire vierge .
  3. Sous Tâches de création , cliquez sur contrôles .
  4. Cliquez deux fois sur la zone de texte pour ajouter deux texte zone de contrôle à l'écran.
  5. Dans le menu Fichier , cliquez sur Publier .
  6. Dans l'Assistant Publication, cliquez sur suivant , cliquez sur serveur pour un Web et puis cliquez sur suivant .
  7. Dans la zone URL et le nom de fichier , tapez l'URL du répertoire virtuel que vous avez créé.
  8. Dans la zone Nom du formulaire , tapez twofield.xsn .

    note Assurez-vous que l'URL est semblable au suivant :
    http:// myServermyVirtualDirectory /twofield.xsn
  9. Cliquez sur suivant , cliquez sur Terminer et cliquez sur Fermer .
  10. Fermez InfoPath.

Créer la page default.asp

  1. Cliquez sur Démarrer , cliquez sur Exécuter , tapez notepad et puis cliquez sur OK .
  2. Collez le code suivant dans la langue Notepad.
    <%@ Language=VBScript %>
    
    <%
    
      dim serverName, hrefPath, fileNamePos, serverPath
    
      serverName = Request.ServerVariables("SERVER_NAME")
    
      hrefPath = Request.ServerVariables("PATH_INFO")
    
      fileNamePos = InStr( 1, hrefPath, "/Default.asp", 1 )
    
      hrefPath = Left(hrefPath, fileNamePos )
    
      serverPath = "http://" + serverName + hrefPath
    
    %>
    
    <HTML>
    
    <head>
    
    <SCRIPT LANGUAGE=VBScript>
    
    Sub ButtonClick()
    
     Dim oInfoPathApp
    
     set oInfoPathApp = CreateObject("InfoPath.ExternalApplication")
    
     oInfoPathApp.New "<%=serverPath%>GetData.asp?dataRequest=2"
    
     set oInfoPathApp = Nothing
    
     window.close
    
    End Sub
    
    </SCRIPT>
    
    </HEAD>
    
    <BODY onload="ButtonClick">
    
    </BODY>
    
    </HTML>
  3. Enregistrez le fichier sous default.asp. Enregistrez le fichier dans le répertoire virtuel que vous avez créé dans la section « Création d'un nouveau répertoire virtuel ».

Créez une page ASP pour générer dynamiquement un formulaire

  1. Recherchez et double-cliquez sur le formulaire Twofield.xsn que vous venez de publier.
    note Un nouveau formulaire vierge s'ouvre pour pouvoir remplir.
  2. Cliquez sur fichier , puis cliquez sur Enregistrer sous .
  3. Enregistrez le fichier en tant que Form1.xml.
  4. Cliquez sur Démarrer , cliquez sur Exécuter , tapez notepad et puis cliquez sur OK .
  5. Paste the following code in Notepad.
    <%@ Language=VBScript %>
    <%
      ' Define the XML namespace for the form.
      Dim strNamespace
      strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
     
      'Calculate the path of this server directory.
      dim serverName, hrefPath, fileNamePos, serverPath
      serverName = Request.ServerVariables("SERVER_NAME")
      hrefPath = Request.ServerVariables("PATH_INFO")
      fileNamePos = InStr( 1, hrefPath, "/GetData.asp", 1 )
      hrefPath = Left(hrefPath, fileNamePos )
      serverPath = "http://" + serverName + hrefPath
     
      ' Set our return content type.
      Response.ContentType = "text/xml"
    
      'Create an XML document to return.
      Dim oXML
      Set oXML = Server.CreateObject("MSXML.DOMDocument")
     
      'Create the XML header that all XML documents must have.
      dim myPI1
      set myPI1 = oXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")
      oXML.insertBefore myPI1, oXML.childNodes.item(0)
     
      'Create the mso-infopathSolution processing instruction that binds the XML from this page to the 
      'TwoField.xsn InfoPath form template.
      dim myPI2
      set myPI2 = oXML.createProcessingInstruction("mso-infoPathSolution", "solutionVersion=""1.0.0.1"" productVersion=""11.0.5531"" PIVersion=""1.0.0.0"" href=""" + serverPath + "TwoField.xsn""")
      oXML.insertBefore myPI2, oXML.childNodes.item(1)
     
      'Create the mso-application processing instruction that marks the XML from this page as an InfoPath form.
      dim myPI3
      set myPI3 = oXML.createProcessingInstruction("mso-application", "progid=""InfoPath.Document""")
      oXML.insertBefore myPI3, oXML.childNodes.item(2)
     
      'Generate the XML for the form.
      dim myFields
      set myFields = oXML.createNode( 1, "myFields", strNamespace )
      oXML.appendChild myFields
     
      dim field1
      set field1 = oXML.createNode( 1, "field1", strNamespace )
     
      dim field2
      set field2 = oXML.createNode( 1, "field2", strNamespace )
     
      dim requestedData
      requestedData = Request("dataRequest")
      Select Case requestedData
         Case "1"
            field1.text = "test field 1"
            field2.text = "test field 2"
         Case "2"
            field1.text = "test field 3"
            field2.text = "test field 4"
         Case "3"
            field1.text = "test field 5"
            field2.text = "test field 6"
         Case Else
            field1.text = "test field 7"
            field2.text = "test field 8"
      end Select
     
      myFields.appendChild field1
      myFields.appendChild field2
     
      'Return the XML to the client.
      Response.Write oXML.XML
    %>
    
  6. Dans le menu Fichier , cliquez sur Enregistrer sous , tapez GetData.asp dans la zone Nom de fichier et puis cliquez sur Enregistrer .
  7. Démarrez une deuxième instance de bloc-notes.
  8. Dans le menu Fichier , cliquez sur Ouvrir , cliquez sur Form1.xml et puis cliquez sur Ouvrir .
  9. Recherchez le xmlns : mon espace de noms déclaration dans Form1.xml, puis copier sa valeur.

    note La valeur ressemble à la suivante :
    http://schemas.microsoft.com/Office/InfoPath/2003/myXSD/2003-04-21T15:25:26
  10. Dans le fichier GetData.asp, recherchez la ligne suivante :
    strNamespace = « http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26 »
  11. Remplacez la valeur de la variable strNamespace avec la valeur que vous avez copié dans l'étape 9.
  12. Cliquez sur Enregistrer , puis quittez le Bloc-notes.
  13. Copiez le fichier GetData.asp dans le même répertoire virtuel où se trouve le modèle de formulaire Twofield.xsn.

Ajouter code au formulaire InfoPath pour charger automatiquement des données de la page ASP

  1. Démarrer InfoPath.
  2. Dans InfoPath 2007, cliquez sur Créer un formulaire modèle dans le volet gauche. Dans InfoPath 2003, cliquez sur Créer un formulaire dans le volet gauche.
  3. Dans InfoPath 2007, cliquez sur Mon ordinateur sous Ouvrir un modèle de formulaire . Dans InfoPath 2003, cliquez sur Poste de travail sous Ouvrir un formulaire en mode Création dans le volet Office Créer un formulaire .
  4. Tapez l'URL du modèle de formulaire que vous publié.

    note L'URL ressemble à la suivante :
    http://myServer/myVirtualDirectory/twofield.xsn
  5. Dans le menu Outils , cliquez sur programmation , puis cliquez sur un événement OnLoad .
  6. Remplacez le code d'événement OnLoad par défaut par le code suivant. fonction
    function XDocument::OnLoad(eventObj)
    {
       //Only load data if the fields are empty.
       if (XDocument.DOM.selectSingleNode("/my:myFields/my:field1").text == "" )
       {
          //Work out the location of the data file based on the current install directory.
        searchExpression = new RegExp( "TwoField.xsn", "ig" );
        searchResults = XDocument.Solution.URI.match( searchExpression );
        if (searchResults.length == 0)
         return;
         
        //Clear the "TwoField.xsn" part of the string.
        var targetDirectory = XDocument.Solution.URI.slice(0, searchResults.index );
     
          //Load the example data into and XML document.
          var objExternalData = new ActiveXObject("MSXML2.DomDocument.5.0");
          objExternalData.async = false;
          objExternalData.validateOnParse = false;
          objExternalData.load( targetDirectory + "getData.asp?dataRequest=3" );
     
          //Set the SelectionNamespaces property so that we can search the example data.
          var strSelectionNamespaces = XDocument.DOM.getProperty("SelectionNamespaces");
          objExternalData.setProperty("SelectionNamespaces", strSelectionNamespaces );
     
          //Find the root node in the example data and import it into the InfoPath document.
          var objExternalXML = objExternalData.selectSingleNode("my:myFields");
          var objReplacementXML = XDocument.DOM.importNode( objExternalXML, true );
          
          //Find the original data in the form and replace it with the example data.
          var objOriginalXML = XDocument.DOM.selectSingleNode("my:myFields"); 
        XDocument.DOM.replaceChild( objReplacementXML, objOriginalXML );
     }
    }
    
    var objOriginalXML = XDocument.DOM.selectSingleNode("my:myFields") ; XDocument.DOM.replaceChild (objReplacementXML, objOriginalXML);}}
  7. Dans le menu Fichier , cliquez sur Enregistrer , puis fermez le formulaire InfoPath.

Tester le formulaire InfoPath

Charger des données à l'aide de l'événement OnLoad

L'événement OnLoad du formulaire TwoField.xsn charge les données à partir de la page GetData.asp Si aucune donnée ne figure dans le formulaire. Pour charger les données, procédez comme suit :
  1. Cliquez sur Démarrer , cliquez sur Exécuter , tapez le chemin d'accès de l'écran et puis cliquez sur OK . Le chemin d'accès que vous tapez ressemble à la suivante :
    http:// myServerIPDynamicData /TwoField.xsn
  2. Si vous êtes invité, cliquez sur Ouvrir .
Notez que InfoPath démarre et le formulaire TwoField.xsn s'ouvre. Champ1 contient « test champ 5 » et Field2 contient « test champ 6 ». Voici les valeurs qui GetData.asp renvoie lorsque son paramètre dataRequest est défini à « 3 ».

Charger un formulaire par défaut à l'aide de ExternalApplication.New

La page default.asp crée un script côté client pour automatiser l'objet ExternalApplication pour démarrer InfoPath, puis de créer un nouveau formulaire. Le nouveau formulaire est basé sur les données XML qui sont renvoyées par GetData.asp. Pour créer l'écran, cliquez sur Démarrer , cliquez sur Exécuter , tapez le chemin d'accès de la page default.asp, puis cliquez sur OK . Le chemin d'accès que vous tapez ressemble à la suivante :
http:// myServerIPDynamicData Mon_serveur/IPDynamicData/.asp default
note Pour utiliser cette méthode, vous devez cliquer sur Demander ou Activer pour le paramètre contrôles ActiveX non marqués comme sécurisés d'initialisation et de script dans Internet Explorer.

Notez que InfoPath démarre et le formulaire TwoField.xsn s'ouvre. Champ1 contient « test champ 3" et Field2 contient « test champ 4". Ils sont les valeurs qui GetData.asp renvoie lorsque son paramètre dataRequest est défini sur « 2 ».

Charger un formulaire existant à partir d'une page ASP

La page GetData.asp renvoie XML dans le format correct pour InfoPath pour l'ouvrir sous la forme d'un fichier de formulaire. Pour ce faire, cliquez sur Démarrer , cliquez sur Exécuter , tapez le chemin d'accès de la page GetData.asp, puis cliquez sur OK . Le chemin d'accès que vous tapez ressemble à la suivante :
http:// myServerIPDynamicData /getData.asp?dataRequest=1
Notez que InfoPath démarre et le formulaire GetData.asp s'ouvre. Champ1 contient « test champ 1 » et Field2 contient « test champ 2 ». Ils sont les valeurs qui GetData.asp renvoie lorsque son paramètre dataRequest est défini sur 1.

Microsoft fournit des exemples de programmation pour illustration uniquement, sans garantie explicite ou implicite. Cela inclut, mais n'est pas limité aux garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils qui sont utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne sont pas modifier les exemples en vue de fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques.

Propriétés

Numéro d'article: 896451 - Dernière mise à jour: mardi 27 mars 2007 - Version: 3.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
Mots-clés : 
kbmt kbscript kbasp kbhowto KB896451 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 896451
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com