Come caricare dinamicamente i dati in un modulo di InfoPath

Traduzione articoli Traduzione articoli
Identificativo articolo: 896451 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo vengono descritti tre metodi per caricare dinamicamente i dati in un modulo di Microsoft Office InfoPath. ╚ possibile utilizzare l'evento OnLoad , automatizzare l'oggetto ExternalApplication di InfoPath o creare una pagina ASP. Vengono forniti esempi di codice.

INTRODUZIONE

In questo articolo viene descritto come caricare dinamicamente i dati in un modulo Office InfoPath.

Informazioni

Un modulo di InfoPath Ŕ un file XML. Il file contiene i dati dal modulo e istruzioni che indicano a Microsoft Windows Explorer o Microsoft Internet Explorer a cui appartiene l'applicazione i dati XML di elaborazione XML.

╚ in modo dinamico possibile caricare dati in InfoPath utilizzando uno dei tre metodi seguenti:
  • Utilizzare l'evento OnLoad .

    Nell'evento OnLoad , Ŕ possibile chiamare una pagina ASP o un'altra origine dati esterna per recuperare i dati e copiarlo nel modulo.
  • Consente di automatizzare l'oggetto ExternalApplication di InfoPath.

    Questo metodo crea un nuovo modulo Ŕ basato sui dati da un'origine esterna.
    Nota L'Inizializza ed Esegui script controlli ActiveX non contrassegnati come sicuri in Internet Explorer deve essere impostata su Richiedi o Attiva per questo metodo per l'utilizzo.
    I dati dall'origine esterna devono inoltre essere XML di InfoPath valido.
  • Creare una pagina ASP.

    La pagina ASP restituisce dati XML nel formato corretto per aprire un file di modulo di InfoPath. I dati XML contengono un riferimento per il modello InfoPath Form in cui devono essere visualizzati i dati. InfoPath pu˛ visualizzarli senza problemi.

Creare una nuova directory virtuale

  1. Avviare Microsoft Internet Information Services Manager.
  2. Espandere la directory di siti Web in visualizzazione struttura.
  3. Fare clic con il pulsante destro del mouse sul sito Web in cui si desidera creare la nuova directory virtuale, scegliere Nuovo e quindi fare clic su Directory virtuale .
  4. Attenersi alla procedura descritta nel Creazione Directory virtuale guidata per creare una nuova directory virtuale.

    Nota ╚ necessario concedere autorizzazione di scrittura alla directory virtuale.

Progettare un modulo di InfoPath

InfoPath 2007

  1. Avviare InfoPath. Nel riquadro sinistro, fare clic su Progetta modello di modulo .
  2. In struttura di una nuova , fare clic per selezionare l'opzione Modello di modulo fare clic per selezionare l'opzione vuoto e quindi fare clic su OK .
  3. In AttivitÓ di progettazione fare clic su controlli .
  4. Fare clic su Casella di testo due volte per aggiungere testo due casella dei controlli al form.
  5. Salvare il modulo.
  6. Nel menu file , fare clic su pubblica .
  7. Nella pubblicazione guidata, fare clic su Avanti . fare clic su un percorso di rete e quindi fare clic su Avanti .
  8. Nel modulo modello percorso e il nome del file casella, digitare l'URL della directory virtuale creata.
  9. Nella casella nome del modello di modulo , digitare twofield.xsn .

    Nota Assicurarsi che l'URL analogo al seguente:
    http:// myServer / myVirtualDirectory /twofield.xsn
  10. Fare clic su Avanti , fare clic su pubblica e quindi fare clic su Chiudi .
  11. Chiudere InfoPath.

InfoPath 2003

  1. Avviare InfoPath. Nel riquadro sinistro, fare clic su Progetta modulo .
  2. Nel gruppo Progetta modulo fare clic su Nuovo modulo vuoto .
  3. In AttivitÓ di progettazione fare clic su controlli .
  4. Fare clic su Casella di testo due volte per aggiungere testo due casella dei controlli al form.
  5. Nel menu file , fare clic su pubblica .
  6. Nella pubblicazione guidata, fare clic su Avanti , fare clic su un Web server e quindi fare clic su Avanti .
  7. Nella casella URL Web e nome file digitare l'URL della directory virtuale creata.
  8. Nella casella nome modulo , digitare twofield.xsn .

    Nota Assicurarsi che l'URL analogo al seguente:
    http:// myServer / myVirtualDirectory /twofield.xsn
  9. Fare clic su Avanti , fare clic su Fine e quindi fare clic su Chiudi .
  10. Chiudere InfoPath.

Creare la pagina default.ASP

  1. Fare clic su Start , scegliere Esegui , digitare notepad e quindi fare clic su OK .
  2. Incollare il codice seguente in linguaggio 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. Salvare il file come default.ASP. Salvare il file nella directory virtuale creata nella sezione "Creare una nuova directory virtuale".

Creare una pagina ASP per generare un modulo in modo dinamico

  1. Individuare e quindi fare doppio clic sul modulo Twofield.xsn appena pubblicato.
    Nota Un nuovo modulo vuoto viene aperta per poter compilare.
  2. Fare clic su file e quindi fare clic su Salva con nome .
  3. Salvare il file come Form1.xml.
  4. Fare clic su Start , scegliere Esegui , digitare notepad e quindi fare clic su 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. Dal menu file scegliere Salva con nome , digitare GetData.asp nella casella nome file e quindi fare clic su Salva .
  7. Avviare una seconda istanza del blocco note.
  8. Dal menu file , fare clic su Apri fare clic su Form1.xml e quindi fare clic su Apri .
  9. Individuare il xmlns: spazio nomi my dichiarazione Form1.xml, quindi copiare il valore.

    Nota Il valore analogo al seguente:
    http://schemas.microsoft.com/Office/InfoPath/2003/myXSD/2003-04-21T15:25:26
  10. In file GetData.asp, individuare la seguente riga:
    strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. Sostituire il valore della variabile strNamespace con il valore copiato nel passaggio 9.
  12. Fare clic su Salva e quindi chiudere il blocco note.
  13. Copiare il file di GetData.asp nella stessa directory virtuale in cui si trova il modello di modulo Twofield.xsn.

Aggiungere codice nel modulo di InfoPath per caricare automaticamente i dati dalla pagina ASP

  1. Avviare InfoPath.
  2. In InfoPath 2007, fare clic su Progetta modulo modello nel riquadro di sinistra. In InfoPath 2003, fare clic su Progetta modulo nel riquadro sinistro.
  3. In InfoPath 2007, fare clic su questo computer in cui aprire un modello di modulo . In InfoPath 2003, fare clic su In Computer in Apri modulo in modalitÓ progettazione nel riquadro attivitÓ Progetta modulo .
  4. Digitare l'URL del modello di modulo Ŕ stato pubblicato.

    Nota L'URL analogo al seguente:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. Dal menu Strumenti , fare clic su programmazione e quindi fare clic su Evento OnLoad .
  6. Sostituire il codice di evento OnLoad predefinito con il codice riportato di seguito.
    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 );
     }
    }
    
  7. Dal menu file , fare clic su Salva e quindi chiudere il modulo di InfoPath.

Verificare il funzionamento del modulo di InfoPath

Caricare i dati utilizzando l'evento OnLoad

L'evento OnLoad della maschera TwoField.xsn carica i dati dalla pagina GetData.asp Se non altro sono dati nel modulo. Per caricare i dati, attenersi alla seguente procedura:
  1. Fare clic su Start , scegliere Esegui , digitare il percorso del modulo e quindi fare clic su OK . Il percorso che si digita analogo al seguente:
    http:// myServer / IPDynamicData /TwoField.xsn
  2. Se viene richiesto, fare clic su Apri .
Si noti che viene avviato InfoPath e il formato TwoField.xsn apre. Campo1 contiene "test campo 5" e Field2 contiene "test 6 del campo". Questi sono i valori che GetData.asp restituisce quando il parametro di dataRequest Ŕ impostato su "3".

Per caricare un modulo predefinito utilizzando ExternalApplication.New

La pagina default.ASP consente di creare script sul lato client per automatizzare l'oggetto ExternalApplication per avviare InfoPath e quindi creare un nuovo modulo. Il nuovo modulo dipende dai dati XML viene restituiti da GetData.asp. Per creare il nuovo modulo, fare clic su Start , scegliere Esegui , digitare il percorso della pagina default.ASP e quindi fare clic su OK . Il percorso che si digita analogo al seguente:
http:// myServer / IPDynamicData / ASP default
Nota Per utilizzare questo metodo, scegliere Richiedi o Attiva per l'impostazione Inizializza ed Esegui script controlli ActiveX non contrassegnati come sicuri in Internet Explorer.

Si noti che viene avviato InfoPath e il formato TwoField.xsn apre. Campo1 contiene "test campo 3" e contiene Field2"test campo 4". Questi sono i valori che GetData.asp restituisce quando il parametro di dataRequest Ŕ impostato su "2".

Caricare un modulo esistente da una pagina ASP

La pagina GetData.asp restituisce codice XML nel formato corretto per aprirlo in un file di modulo di InfoPath. Per effettuare questa operazione, fare clic su Start , scegliere Esegui , digitare il percorso della pagina GetData.asp e quindi fare clic su OK . Il percorso che si digita analogo al seguente:
http:// myServer / IPDynamicData /getData.asp?dataRequest=1
Si noti che viene avviato InfoPath e il formato GetData.asp apre. Campo1 contiene "test campo 1" e Field2 contiene "test campo 2". Questi sono i valori che GetData.asp restituisce quando il parametro di dataRequest Ŕ impostato su "1".

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non Ŕ limitato a, le garanzie implicite di commerciabilitÓ o idoneitÓ per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalitÓ di una particolare procedura, ma in nessun sono caso a modificare questi esempi per fornire funzionalitÓ aggiuntive o creare procedure per soddisfare specifiche esigenze.

ProprietÓ

Identificativo articolo: 896451 - Ultima modifica: martedý 27 marzo 2007 - Revisione: 3.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
Chiavi:á
kbmt kbscript kbasp kbhowto KB896451 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 896451
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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