A carregar dinamicamente os dados num formulário do InfoPath

Traduções de Artigos Traduções de Artigos
Artigo: 896451 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve três formas de forma dinâmica carregar os dados num formulário do Microsoft Office InfoPath. Pode utilizar o evento OnLoad , automatizar o objecto do InfoPath ExternalApplication ou criar uma página ASP. São fornecidos exemplos de código.

INTRODUÇÃO

Este artigo descreve como carregar os dados num formulário do InfoPath Office dinamicamente.

Mais Informação

Um formulário do InfoPath é um ficheiro XML. O ficheiro contém os dados do formulário e instruções que indicam ao Explorador do Windows ou no Microsoft Internet Explorer ao qual pertence aplicação os dados XML de processamento de XML.

Pode carregar dinamicamente dados no InfoPath utilizando um dos três métodos seguintes:
  • Utilize o evento OnLoad .

    No evento AoCarregar , é possível chamar uma página ASP ou outra origem de dados externos para obter os dados e copiá-lo para o formulário.
  • Automatizar o objecto do InfoPath ExternalApplication .

    Este método cria um novo formulário baseado nos dados de uma origem externa.
    Nota A definição de inicialização e script de controlos ActiveX não estejam assinalados como sendo seguros no Internet Explorer tem de ser definida para Perguntar ou Activar para este método para trabalhar.
    Os dados de origem externa também têm de ser XML válido do InfoPath.
  • Crie uma página ASP.

    A página ASP devolve dados XML no formato correcto para o InfoPath abrir como um ficheiro de formulário. Os dados XML contém uma referência ao modelo de formulário do InfoPath onde os dados devem ser apresentados. O InfoPath pode apresentar os dados sem problemas.

Criar um novo directório virtual

  1. Iniciar o Microsoft Internet Information Services Manager.
  2. Expanda o directório Web Sites na vista de árvore.
  3. Clique com o botão direito do rato no Web site onde pretende criar o novo directório virtual, aponte para Novo e, em seguida, clique em Directório Virtual .
  4. Siga os passos a virtual criação do assistente para criar um novo directório virtual.

    Nota Tem de conceder permissão de escrita para o directório virtual.

Estruturar um formulário do InfoPath

O InfoPath 2007

  1. Inicie o InfoPath. No painel esquerdo, clique em estrutura de um modelo de formulário .
  2. Em Estruturar um novo , clique para seleccionar a opção de Modelo de formulário , clique para seleccionar a opção em branco e, em seguida, clique em OK .
  3. Em Tarefas de estrutura , clique em controlos .
  4. Clique duas vezes em Caixa de texto para adicionar texto dois caixa controlos ao formulário.
  5. Guarde o formulário.
  6. No menu ficheiro , clique em Publicar .
  7. No Assistente de publicação, clique em seguinte . Clique em para uma localização de rede e, em seguida, clique em seguinte .
  8. No formulário de modelo de caminho e o nome do ficheiro caixa, escreva o URL do directório virtual que criou.
  9. Na caixa nome do modelo de formulário , escreva twofield.xsn .

    Nota Certifique-se de que o URL é semelhante ao seguinte:
    http:// myServer / myVirtualDirectory /twofield.xsn
  10. Clique em seguinte , clique em Publicar e, em seguida, clique em Fechar .
  11. Saia do InfoPath.

InfoPath 2003

  1. Inicie o InfoPath. No painel esquerdo, clique em Estruturar um formulário .
  2. Em Estruturar um formulário , clique em Novo formulário em branco .
  3. Em Tarefas de estrutura , clique em controlos .
  4. Clique duas vezes em Caixa de texto para adicionar texto dois caixa controlos ao formulário.
  5. No menu ficheiro , clique em Publicar .
  6. No Assistente de publicação, clique em seguinte , clique em servidor para a Web e, em seguida, clique em seguinte .
  7. Na caixa URL da Web e nome de ficheiro , escreva o URL do directório virtual que criou.
  8. Na caixa nome do formulário , escreva twofield.xsn .

    Nota Certifique-se de que o URL é semelhante ao seguinte:
    http:// myServer / myVirtualDirectory /twofield.xsn
  9. Clique em seguinte , clique em Concluir e, em seguida, clique em Fechar .
  10. Saia do InfoPath.

Criar a página default.asp

  1. Clique em Iniciar , clique em Executar , escreva notepad e, em seguida, clique em OK .
  2. Cole o código seguinte no idioma 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. Guarde o ficheiro como default.asp. Guarde o ficheiro no directório virtual que criou na secção "Criar um novo directório virtual".

Criar uma página ASP para gerar dinamicamente um formulário

  1. Localize e, em seguida, faça duplo clique sobre o formulário de Twofield.xsn que acabou de publicar.
    Nota É aberto um novo formulário em branco para conseguir preencher.
  2. Clique em ficheiro e, em seguida, clique em Guardar como .
  3. Guarde o ficheiro como Form1.xml.
  4. Clique em Iniciar , clique em Executar , escreva notepad e, em seguida, clique em 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. No menu ficheiro , clique em Guardar como , escreva GetData.asp na caixa nome do ficheiro e, em seguida, clique em Guardar .
  7. Inicie uma segunda instância do bloco de notas.
  8. No menu ficheiro , clique em Abrir , clique em Form1.xml e, em seguida, clique em Abrir .
  9. Localize o xmlns: o espaço de nomes declaração no Form1.xml e, em seguida, copie o valor.

    Nota O valor é semelhante ao seguinte:
    http://schemas.Microsoft.com/Office/InfoPath/2003/myXSD/2003-04-21T15:25:26
  10. No ficheiro GetData.asp, localize a seguinte linha:
    strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. Substitua o valor da variável strNamespace com o valor que copiou no passo 9.
  12. Clique em Guardar e saia do bloco de notas.
  13. Copie o ficheiro GetData.asp no mesmo directório virtual onde se encontra o modelo de formulário Twofield.xsn.

Adicionar código ao formulário do InfoPath carregar automaticamente os dados da página ASP

  1. Inicie o InfoPath.
  2. No InfoPath 2007, clique em Estruturar um formulário de modelo no painel da esquerda. No InfoPath 2003, clique em Estruturar um formulário no painel da esquerda.
  3. No InfoPath 2007, clique No meu computador em Abrir um modelo de formulário . No InfoPath 2003, clique em Meu computador em Abrir um formulário no modo de estrutura no painel de tarefas de Estruturar um formulário .
  4. Escreva o URL do modelo de formulário que publicou.

    Nota O URL é semelhante ao seguinte:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. No menu Ferramentas , clique em programação e, em seguida, clique em Evento OnLoad .
  6. Substitua o código de evento OnLoad por defeito o seguinte código. função
    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. No menu ficheiro , clique em Guardar e, em seguida, feche o formulário do InfoPath.

Testar o formulário do InfoPath

Carregar dados utilizando o evento OnLoad

O evento de AoCarregar do formulário TwoField.xsn carrega dados a partir da página GetData.asp se outros dados não estão no formato. Para carregar os dados, siga estes passos:
  1. Clique em Iniciar , clique em Executar , escreva o caminho do formulário e, em seguida, clique em OK . O caminho que escreve é semelhante ao seguinte:
    http:// myServer / IPDynamicData /TwoField.xsn
  2. Se lhe for pedido, clique em Abrir .
Repare que o InfoPath é iniciado e a forma TwoField.xsn abre. Campo1 contém "teste campo 5" e campo2 contém "teste campo 6". Estes são os valores que GetData.asp devolve quando o parâmetro dataRequest é definido como "3".

Carregar um formulário predefinido utilizando ExternalApplication.New

A página default.asp cria o script do lado do cliente para automatizar o objecto ExternalApplication para iniciar o InfoPath e, em seguida, criar um novo formulário. O novo formulário baseia-se os dados XML que são devolvidos pelo GetData.asp. Para criar o novo formulário, clique em Iniciar , clique em Executar , escreva o caminho da página default.asp e, em seguida, clique em OK . O caminho que escreve é semelhante ao seguinte:
http:// myServer / IPDynamicData / .asp default
Nota Para utilizar este método, terá de clicar Pedir ou Activar para a definição de inicialização e script de controlos ActiveX não estejam assinalados como sendo seguros no Internet Explorer.

Repare que o InfoPath é iniciado e a forma TwoField.xsn abre. Campo1 contém "teste campo 3" e contém campo2"teste campo 4". Estes são os valores que GetData.asp devolve quando o parâmetro dataRequest é definido como "2".

Carregar um formulário existente a partir de uma página ASP

A página GetData.asp devolve XML no formato correcto para o InfoPath abri-lo como um ficheiro de formulário. Para o fazer, clique em Iniciar , clique em Executar , escreva o caminho da página GetData.asp e, em seguida, clique em OK . O caminho que escreve é semelhante ao seguinte:
http:// myServer / IPDynamicData /getData.asp?dataRequest=1
Repare que o InfoPath é iniciado e a forma GetData.asp abre. Campo1 contém "teste campo 1" e campo2 contém "teste campo 2". Estes são os valores que GetData.asp devolve quando o parâmetro dataRequest é definido como "1".

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Propriedades

Artigo: 896451 - Última revisão: 27 de março de 2007 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
Palavras-chave: 
kbmt kbscript kbasp kbhowto KB896451 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 896451

Submeter comentários

 

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