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.
Tento článek popisuje, jak dynamicky načíst data ve formuláři Office InfoPath.
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:
Vytvořit nový virtuální adresář
- Spustit Internetová informační služba správce.
- Rozbalte adresář webové servery ve stromovém zobrazení.
- 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ář.
- 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
- Spustit InfoPath. V levém podokně klepněte na tlačítko Navrhnout šablonu formuláře.
- 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.
- V rámečku Navrhnout úkoly klepněte na prvky.
- Klepněte dvakrát na tlačítko Textové pole přidat dva textové pole ovládacích prvků do formuláře.
- Formulář uložit.
- V nabídce soubor klepněte na tlačítko publikovat.
- 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ší.
- Cesta a název šablony formuláře zadejte URL virtuálního adresáře, který jste vytvořili.
- Do pole název šablony formuláře zadejte twofield.xsn.
Poznámka: Zkontrolujte adresu podobná následující: http:// myServer / myVirtualDirectory /twofield.xsn
- Klepněte na tlačítko Další, klepněte na tlačítko publikovat a klepněte na tlačítko Zavřít.
- Ukončete InfoPath.
InfoPath 2003
- Spustit InfoPath. V levém podokně klepněte na tlačítko Navrhnout formulář.
- Ve skupinovém rámečku Navrhnout formulář klepněte na tlačítko Nový prázdný formulář.
- V rámečku Navrhnout úkoly klepněte na prvky.
- Klepněte dvakrát na tlačítko Textové pole přidat dva textové pole ovládacích prvků do formuláře.
- V nabídce soubor klepněte na tlačítko publikovat.
- 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ší.
- V okně web URL a název souboru zadejte URL virtuálního adresáře, který jste vytvořili.
- Do pole název formuláře zadejte twofield.xsn.
Poznámka: Zkontrolujte adresu podobná následující: http:// myServer / myVirtualDirectory /twofield.xsn
- Klepněte na tlačítko Další, klepněte na tlačítko Dokončit a potom klepněte na tlačítko Zavřít.
- Ukončete InfoPath.
Vytvořit stránku default.ASP
- Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový blok a potom klepněte na tlačítko OK.
- 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> - 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ář
- Vyhledejte a poklepejte na Twofield.xsn formulář, který jste publikovali.
Poznámka: Nový prázdný formulář je otevřen pro vyplnění.
- Klepněte na soubor a klepněte na příkaz Uložit jako.
- Uložte soubor jako Form1.xml.
- Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Poznámkový blok a potom klepněte na tlačítko OK.
- 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
%>
- 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.
- Spustit druhou instanci programu Poznámkový blok.
- 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.
- 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
- V GetData.asp soubor vyhledejte následující řádek:
strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
- Nahraďte hodnotu proměnné strNamespace hodnotu zkopírovali v kroku 9.
- Klepněte na tlačítko Uložit a ukončete Poznámkový blok.
- 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
- Spustit aplikaci InfoPath.
- 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ář.
- 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ář.
- Zadejte URL šablonu formuláře jste publikovali.
Poznámka: ADRESU podobná následující:http://myServer/myVirtualDirectory/twofield.xsn
- V nabídce Nástroje klepněte na položku programování a potom klepněte na příkaz Událost OnLoad.
- 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 );
}
}
- 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:
- 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
- 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.
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)
| kbmt kbscript kbasp kbhowto KB896451 KbMtcs |
Strojově přeložený článekDů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
(http://support.microsoft.com/kb/896451/en-us/
)