Jak dynamicky načíst data ve formuláři aplikace InfoPath

Překlady článku Překlady článku
ID článku: 896451 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje tři způsoby dynamicky načíst data formuláře Microsoft Office InfoPath. Použít událost OnLoad, automatizovat InfoPath ExternalApplication objekt nebo vytvořit stránku ASP. Ukázky kódu jsou k dispozici.

Úvod

Tento článek popisuje, jak dynamicky načíst data ve formuláři Office InfoPath.

Další informace

Formuláře aplikace InfoPath je soubor XML. Soubor obsahuje data z formuláře a XML zpracování pokynů sdělit Průzkumníka Windows nebo do které patří aplikace XML data tiskárny v Internet Explorer.

Můžete dynamicky načíst data do aplikace InfoPath pomocí jedné z následujících tří metod:
  • Použít událost OnLoad.

    Událost OnLoad můžete volat stránky ASP nebo jiného externího zdroje dat načíst data a zkopírujte jej do formuláře.
  • Automatizace objektu InfoPath ExternalApplication.

    Tato metoda vytvoří nový formulář, který je na základě dat z externího zdroje.
    Poznámka:Inicializovat a skriptovat ovládací prvky ActiveX nejsou označeny jako bezpečné nastavení v aplikaci Internet Explorer musí být nastavena na výzvu nebo Povolit pro tuto metodu pracovat.
    Platné InfoPath XML musí být také data z externího zdroje.
  • Vytvořte stránku ASP.

    Stránka ASP vrací XML data ve správném formátu pro InfoPath otevřít jako soubor formuláře. XML data obsahuje odkaz na šablonu formuláře InfoPath by měla být data zobrazena. Aplikace InfoPath lze zobrazit data bez potíží.

Vytvořit nový virtuální adresář

  1. Spustit Internetová informační služba správce.
  2. Rozbalte adresář webové servery ve stromovém zobrazení.
  3. Klepněte pravým tlačítkem myši na webový server, kde chcete vytvořit nový virtuální adresář, přejděte na příkaz Nový a pak klepněte na příkaz Virtuální adresář.
  4. Postupujte podle pokynů Virtual Directory vytvoření průvodce vytvořit nový virtuální adresář.

    Poznámka: Je nutné udělit oprávnění k zápisu do virtuálního adresáře.

Návrh formuláře aplikace InfoPath

Aplikace InfoPath 2007

  1. Spustit InfoPath. V levém podokně klepněte na tlačítko Navrhnout šablonu formuláře.
  2. Ve skupinovém rámečku Navrhnout nový klepněte na možnost Šablona formuláře, klepnutím vyberte možnost prázdný a klepněte na tlačítko OK.
  3. V rámečku Navrhnout úkoly klepněte na prvky.
  4. Klepněte dvakrát na tlačítko Textové pole přidat dva textové pole ovládacích prvků do formuláře.
  5. Formulář uložit.
  6. V nabídce soubor klepněte na tlačítko publikovat.
  7. V Průvodci publikováním klepněte na tlačítko Další. Klepněte na tlačítko umístění v síti a potom klepněte na tlačítko Další.
  8. Cesta a název šablony formuláře zadejte URL virtuálního adresáře, který jste vytvořili.
  9. Do pole název šablony formuláře zadejte twofield.xsn.

    Poznámka: Zkontrolujte adresu podobná následující:
    http:// myServer / myVirtualDirectory /twofield.xsn
  10. Klepněte na tlačítko Další, klepněte na tlačítko publikovat a klepněte na tlačítko Zavřít.
  11. Ukončete InfoPath.

InfoPath 2003

  1. Spustit InfoPath. V levém podokně klepněte na tlačítko Navrhnout formulář.
  2. Ve skupinovém rámečku Navrhnout formulář klepněte na tlačítko Nový prázdný formulář.
  3. V rámečku Navrhnout úkoly klepněte na prvky.
  4. Klepněte dvakrát na tlačítko Textové pole přidat dva textové pole ovládacích prvků do formuláře.
  5. V nabídce soubor klepněte na tlačítko publikovat.
  6. V Průvodci publikováním klepněte na tlačítko Další, klepněte na server pro webovou a potom klepněte na tlačítko Další.
  7. V okně web URL a název souboru zadejte URL virtuálního adresáře, který jste vytvořili.
  8. Do pole název formuláře zadejte twofield.xsn.

    Poznámka: Zkontrolujte adresu podobná následující:
    http:// myServer / myVirtualDirectory /twofield.xsn
  9. Klepněte na tlačítko Další, klepněte na tlačítko Dokončit a potom klepněte na tlačítko Zavřít.
  10. Ukončete InfoPath.

Vytvořit stránku default.ASP

  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový blok a potom klepněte na tlačítko OK.
  2. Vložte následující kód jazyka 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. Uložte soubor jako default.ASP. Uložte soubor na virtuální adresář, který jste vytvořili v části "Vytvoření nového virtuálního adresáře".

Vytvořte stránku ASP dynamicky generovat formulář

  1. Vyhledejte a poklepejte na Twofield.xsn formulář, který jste publikovali.
    Poznámka: Nový prázdný formulář je otevřen pro vyplnění.
  2. Klepněte na soubor a klepněte na příkaz Uložit jako.
  3. Uložte soubor jako Form1.xml.
  4. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový blok a potom klepněte na tlačítko 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. V nabídce soubor klepněte na tlačítko Uložit jako, zadejte do pole název souboruGetData.asp a klepněte na tlačítko Uložit.
  7. Spustit druhou instanci programu Poznámkový blok.
  8. V nabídce soubor klepněte na tlačítko Otevřít, klepněte na tlačítko Form1.xml a potom klepněte na tlačítko Otevřít.
  9. Vyhledejte xmlns: Moje oboru názvů deklarace Form1.xml a potom zkopírujte jeho hodnotu.

    Poznámka: Hodnota podobná následující:
    http://schemas.microsoft.com/Office/InfoPath/2003/myXSD/2003-04-21T15:25:26
  10. V GetData.asp soubor vyhledejte následující řádek:
    strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. Nahraďte hodnotu proměnné strNamespace hodnotu zkopírovali v kroku 9.
  12. Klepněte na tlačítko Uložit a ukončete Poznámkový blok.
  13. Zkopírujte soubor GetData.asp stejný virtuální adresář, kde je umístěn Twofield.xsn šablony formuláře.

Přidat kód formulář automaticky načíst data ze stránky ASP

  1. Spustit aplikaci InfoPath.
  2. V aplikaci InfoPath 2007 klepněte Navrhnout formulář šablony v levém podokně. V aplikaci InfoPath 2003 v levém podokně klepněte na tlačítko Navrhnout formulář.
  3. V aplikaci InfoPath 2007 klepněte v části Otevřít šablonu formulářeV tomto počítači. V aplikaci InfoPath 2003 klepněte v části Otevřít formulář v návrhovém režimuV tomto počítači v podokno úloh Navrhnout formulář.
  4. Zadejte URL šablonu formuláře jste publikovali.

    Poznámka: ADRESU podobná následující:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. V nabídce Nástroje klepněte na položku programování a potom klepněte na příkaz Událost OnLoad.
  6. Výchozí kód události OnLoad nahraďte následující kód. Funkce
    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. V nabídce soubor klepněte na tlačítko Uložit a zavřít formulář.

Testovat formulář

Načtení dat pomocí události OnLoad

Událost OnLoad TwoField.xsn formuláře načte data z stránka GetData.asp, pokud nejsou žádná data ve formuláři. Načtení dat, postupujte takto:
  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte cestu ve formuláři a klepněte na tlačítko OK. Cestu zadejte podobná následující:
    http:// myServer / IPDynamicData /TwoField.xsn
  2. Pokud budete vyzváni, klepněte na tlačítko Otevřít.
Všimněte si, že spustí aplikace InfoPath a TwoField.xsn formulář otevře. Obsahuje pole 5 "test" pole1 a pole2 obsahuje "pole 6 test". Jsou to hodnoty GetData.asp vrátí při jeho dataRequest parametr nastaven na hodnotu "3".

Načíst výchozí formulář pomocí ExternalApplication.New

Vytvoří stránku default.ASP skriptu na straně klienta k automatizaci ExternalApplication objektu, který chcete spustit aplikaci InfoPath a potom vytvořit nový formulář. Nový formulář je založen na data XML, která je vrácena GetData.asp. Vytvořit nový formulář, klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte cestu stránku default.ASP a potom klepněte na tlačítko OK. Cestu zadejte podobná následující:
http:// myServer / IPDynamicData / default ASP
Poznámka: Chcete-li použít tuto metodu, musíte klepnout výzva nebo Povolitinicializovat a skriptovat ovládací prvky ActiveX nejsou označeny jako bezpečné nastavení v aplikaci Internet Explorer.

Všimněte si, že spustí aplikace InfoPath a TwoField.xsn formulář otevře. Obsahuje pole1, "test pole 3" a obsahuje pole2"test pole 4". Jsou to hodnoty GetData.asp vrátí při jeho dataRequest parametr nastaven na "2".

Načíst existující formulář ze stránky ASP

Stránka GetData.asp vrátí XML ve správném formátu pro InfoPath otevřít jako soubor formuláře. Chcete-li to provést, klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte cestu stránka GetData.asp a klepněte na tlačítko OK. Cestu zadejte podobná následující:
http:// myServer / IPDynamicData /getData.asp?dataRequest=1
Všimněte si, že spustí aplikace InfoPath a GetData.asp formulář otevře. Obsahuje "pole 1 test" pole1 a pole2 obsahuje "pole 2 test". Jsou to hodnoty GetData.asp vrátí při jeho dataRequest parametr nastaven na "1".

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené,. včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.

Vlastnosti

ID článku: 896451 - Poslední aktualizace: 27. března 2007 - Revize: 3.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
Klíčová slova: 
kbmt kbscript kbasp kbhowto KB896451 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:896451

Dejte nám zpětnou vazbu

 

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