Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come caricare dinamicamente i dati in un modulo di InfoPath

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

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
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.closeEnd 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.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 896451 - Ultima revisione: 03/27/2007 21:23:22 - Revisione: 3.1

Microsoft Office InfoPath 2007, Microsoft Office InfoPath 2003, Microsoft Office InfoPath 2003, Service Pack 1 (SP1)

  • kbmt kbscript kbasp kbhowto KB896451 KbMtit
Feedback
=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">