Dynamisch Laden von Daten in einem InfoPath-Formular

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 896451 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt drei Möglichkeiten, Daten in einem Microsoft Office InfoPath-Formular dynamisch zu laden. Sie können das OnLoad -Ereignis verwenden, Automatisieren von InfoPath ExternalApplication -Objekts oder Erstellen einer ASP-Seite. Code-Beispiele werden bereitgestellt.

EINFÜHRUNG

Dieser Artikel beschreibt, Daten in einem Office InfoPath-Formular dynamisch zu laden.

Weitere Informationen

Ein InfoPath-Formular ist eine XML-Datei. Die Datei enthält die Daten aus dem Formular und XML-Verarbeitung von Anweisungen, die Microsoft Windows Explorer erkennen oder Microsoft Internet Explorer zu der Anwendung die XML-Daten gehört.

Sie können Daten in InfoPath dynamisch laden, mithilfe einer der folgenden drei Methoden:
  • Verwenden Sie das OnLoad -Ereignis.

    Im OnLoad -Ereignis können Sie eine ASP-Seite oder einem anderen externen Datenquelle, um die Daten abzurufen und ihn in das Formular kopieren aufrufen.
  • Automatisieren von InfoPath ExternalApplication -Objekts.

    Diese Methode erstellt ein neues Formular, das auf die Daten aus einer externen Datenquelle basiert.
    Hinweis: Die Einstellung initialisieren und Skript nicht als sicher markiert sind ActiveX-Steuerelemente in Internet Explorer muss auf Eingabeaufforderung oder Aktivieren , für diese Methode, um arbeiten festgelegt werden.
    Die Daten aus der externen Quelle müssen auch gültige InfoPath-XML sein.
  • Erstellen einer ASP-Seite.

    Die ASP-Seite gibt XML-Daten in das richtige Format für InfoPath öffnen als eine Formulardatei zurück. Die XML-Daten enthält einen Verweis auf die InfoPath Form-Vorlage, wo die Daten angezeigt werden soll. InfoPath kann die Daten ohne ein Problem angezeigt.

Erstellen Sie ein neues virtuelles Verzeichnis

  1. Starten Sie Microsoft Internetinformationsdienste-Manager.
  2. Erweitern Sie das Verzeichnis Websites in der Strukturansicht.
  3. Klicken Sie mit der rechten Maustaste auf die Website soll das neue virtuelle Verzeichnis erstellen, zeigen Sie auf neu und klicken Sie dann auf Virtuelles Verzeichnis .
  4. Führen Sie die Schritte in der Erstellen virtueller Verzeichnisse Assistenten zum Erstellen eines neuen virtuellen Verzeichnisses.

    Hinweis: Sie müssen über Schreibberechtigung für das virtuelle Verzeichnis erteilen.

Ein InfoPath-Formular entwerfen

InfoPath 2007

  1. Starten Sie InfoPath. Klicken Sie in den linken Bereich auf eine Formularvorlage entwerfen .
  2. Klicken Sie unter neu entwerfen auf die Formularvorlage Option, klicken auf die leere Option und klicken Sie dann auf OK .
  3. Klicken Sie unter Formularentwurf auf Steuerelemente .
  4. Klicken Sie zweimal auf Textfeld zum Hinzufügen von zwei Text Feld das Formular Steuerelemente.
  5. Speichern Sie das Formular.
  6. Klicken Sie im Menü Datei auf Veröffentlichen .
  7. Klicken Sie im Veröffentlichen-Assistenten auf Weiter . Klicken Sie auf an einem Speicherort im Netzwerk , und klicken Sie dann auf Weiter .
  8. Im Formular Vorlage Pfad und Dateiname Geben Sie den URL des virtuellen Verzeichnisses, die Sie erstellt haben.
  9. Geben Sie twofield.xsn , im Feld Formularname Vorlage .

    Hinweis: Stellen Sie sicher, dass der URL folgenden Inhalts angezeigt:
    http:// myServer / myVirtualDirectory /twofield.xsn
  10. Klicken Sie auf Weiter , klicken Sie auf Veröffentlichen und klicken Sie dann auf Schließen .
  11. Beenden Sie InfoPath.

InfoPath 2003

  1. Starten Sie InfoPath. Klicken Sie im linken Bereich auf ein Formular entwerfen .
  2. Klicken Sie unter ein Formular entwerfen auf Neues Formular .
  3. Klicken Sie unter Formularentwurf auf Steuerelemente .
  4. Klicken Sie zweimal auf Textfeld zum Hinzufügen von zwei Text Feld das Formular Steuerelemente.
  5. Klicken Sie im Menü Datei auf Veröffentlichen .
  6. Klicken Sie im Veröffentlichen-Assistenten auf Weiter , klicken Sie auf einem Webserver und klicken Sie dann auf Weiter .
  7. Geben Sie im Feld Web-URL und Dateiname den URL des virtuellen Verzeichnisses, die Sie erstellt haben.
  8. Geben Sie im Feld Formularname twofield.xsn .

    Hinweis: Stellen Sie sicher, dass der URL folgenden Inhalts angezeigt:
    http:// myServer / myVirtualDirectory /twofield.xsn
  9. Klicken Sie auf Weiter , klicken Sie auf Fertig stellen , und klicken Sie dann auf Schließen .
  10. Beenden Sie InfoPath.

Erstellen der Seite default.ASP

  1. Klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie Notepad und klicken Sie dann auf OK .
  2. Fügen Sie den folgenden Code in 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. Speichern Sie die Datei als default.ASP. Speichern Sie die Datei im virtuellen Verzeichnis, das Sie in den Abschnitt "Erstellen ein neues virtuelles Verzeichnisses" erstellt haben.

Erstellen einer ASP-Seite ein Formular dynamisch generieren

  1. Suchen Sie und dann auf das Formular Twofield.xsn, das Sie gerade veröffentlicht.
    Hinweis: Ein neues Formular wird für Sie zum Ausfüllen geöffnet.
  2. Klicken Sie auf Datei , und klicken Sie dann auf Speichern unter .
  3. Speichern Sie die Datei als Form1.xml.
  4. Klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie Notepad und klicken Sie dann auf 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. Im Menü Datei klicken Sie auf Speichern unter , geben Sie GetData.asp in das Feld Dateiname ein und klicken Sie dann auf Speichern .
  7. Starten einer zweiten Instanz von Editor.
  8. Im Menü Datei klicken Sie auf Öffnen , klicken Sie auf Form1.xml und klicken Sie dann auf Öffnen .
  9. Suchen Sie die Xmlns: my-Namespace Deklaration in Form1.xml, und kopieren Sie den Wert.

    Hinweis: Der Wert ähnelt dem folgenden:
    http://Schemas.Microsoft.com/Office/InfoPath/2003/myXSD/2003-04-21T15:25:26
  10. Suchen Sie in der freigebn GetData.asp die folgende Zeile:
    StrNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. Ersetzen Sie den Wert der Variablen StrNamespace durch den Wert, den Sie in Schritt 9 kopiert.
  12. Klicken Sie auf Speichern und schließen Sie Editor.
  13. Kopieren Sie die GetData.asp-Datei in das gleiche virtuelle Verzeichnis, in dem die Vorlage Twofield.xsn Formular gespeichert ist.

Dem InfoPath-Formular Laden von Daten automatisch aus der ASP-Seite fügen Sie Code hinzu

  1. Starten Sie InfoPath.
  2. Klicken Sie in InfoPath 2007 ein Formular entwerfen Vorlage im linken Bereich. Klicken Sie in InfoPath 2003 im linken Bereich auf ein Formular entwerfen .
  3. Klicken Sie in InfoPath 2007 unter Öffnen eines Formulars Vorlage auf Auf meinem Computer . Klicken Sie in InfoPath 2003 auf Auf meinem Computer unter ein Formular im Entwurfsmodus öffnen im Aufgabenbereich ein Formular entwerfen .
  4. Geben Sie den URL des Formular-Vorlage, die Sie veröffentlicht.

    Hinweis: Der URL sieht etwa folgendermaßen aus:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. Im Menü Extras klicken Sie auf Programmierung und anschließend auf OnLoad-Ereignis .
  6. Ersetzen Sie den Standardwert OnLoad -Ereigniscode, mit dem folgenden Code.
    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. Im Menü Datei klicken Sie auf Speichern und schließen Sie das InfoPath-Formular.

Testen Sie das InfoPath-Formular

Laden von Daten mithilfe des OnLoad -Ereignisses

Das TwoField.xsn Formular OnLoad -Ereignis lädt Daten aus der GetData.asp-Seite, wenn keine anderen Daten im Formular. Gehen Sie folgendermaßen vor um die Daten zu laden:
  1. Klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie den Pfad im Formular und klicken Sie dann auf OK . Der Pfad, den Sie eingeben sieht etwa folgendermaßen aus:
    http:// myServer / IPDynamicData /TwoField.xsn
  2. Wenn Sie aufgefordert werden, klicken Sie auf Öffnen .
Beachten Sie, die InfoPath beginnt und das TwoField.xsn-Formular wird geöffnet. Feld1 enthält "test Feld 5", und Field2 enthält "test Feld 6". Diese sind die Werte, die GetData.asp zurückgibt, wenn der DataRequest -Parameter auf "3" festgelegt ist.

Laden Sie ein Standardformular mithilfe von ExternalApplication.New

Die Seite default.ASP erstellt clientseitiges Skript zum Automatisieren ExternalApplication -Objekts, um InfoPath zu starten und dann ein neues Formular erstellen. Das neue Formular basiert auf XML-Daten, die von GetData.asp zurückgegeben wird. Um das neue Formular zu erstellen, klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie den Pfad der Seite default.ASP und klicken Sie dann auf OK . Der Pfad, den Sie eingeben sieht etwa folgendermaßen aus:
http:// myServer / IPDynamicData / ASP-default
Hinweis: Diese Methode verwenden, müssen Sie die Eingabeaufforderung oder Aktivieren für die ActiveX-Steuerelemente, die nicht als sicher markiert initialisieren und Ausführen Einstellung in Internet Explorer klicken.

Beachten Sie, die InfoPath beginnt und das TwoField.xsn-Formular wird geöffnet. Enthält Feld1, "Test Feld 3" und enthält Field2"Test Feld 4". Diese sind die Werte, die GetData.asp zurückgibt, wenn der DataRequest -Parameter auf "2" festgelegt ist.

Laden Sie ein vorhandenes Formular aus einer ASP-Seite

Die Seite GetData.asp gibt XML im richtigen Format für InfoPath öffnen als eine Formulardatei zurück. Dazu klicken Sie auf Start , klicken Sie auf Ausführen , geben Sie den Pfad der GetData.asp-Seite und klicken Sie dann auf OK . Der Pfad, den Sie eingeben sieht etwa folgendermaßen aus:
http:// myServer / IPDynamicData /getData.asp?dataRequest=1
Beachten Sie, die InfoPath beginnt und das GetData.asp-Formular wird geöffnet. Feld1 enthält "test Feld 1" und Field2 "test Feld 2". Diese sind die Werte, die GetData.asp zurückgibt, wenn der DataRequest -Parameter auf "1" festgelegt ist.

Microsoft bietet Programmierbeispiele für Abbildung nur ohne Gewährleistung oder konkludent. Dies umfasst, ist jedoch nicht beschränkt auf konkludenten Garantien der Handelsüblichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der Programmiersprache, die Programmierungsbeispiele ist und mit den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden vertraut sind. Microsoft Support-Technikern helfen Erläuterung die Funktionalität einer bestimmten Prozedur, Sie werden ändert jedoch nicht diese Beispiele bieten Funktionen hinzugefügt oder Verfahren, um Ihren Anforderungen entsprechend zu erstellen.

Eigenschaften

Artikel-ID: 896451 - Geändert am: Dienstag, 27. März 2007 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
Keywords: 
kbmt kbscript kbasp kbhowto KB896451 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 896451
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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