Como usar caracteres curinga em uma consulta de formulário do InfoPath ao vincular a uma fonte de dados ADO

Traduções deste artigo Traduções deste artigo
ID do artigo: 826992 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

O Microsoft Office InfoPath simplifica ligação para o Microsoft SQL Server ou Microsoft Access. O InfoPath pode gerar automaticamente consultas de tabela simples, direto para um banco de dados SQL ou para um banco de dados usando o Microsoft ActiveX Data Objects (ADO). Em seguida, o InfoPath permite que os resultados da consulta a serem exibidos e editados no formulário.

Para consultas mais avançadas, o InfoPath disponibiliza vários métodos de programação para o usuário avançado ou para o desenvolvedor. Esses métodos de programação permitem que o usuário avançado ou o desenvolvedor crie formulários que podem executar uma consulta personalizada que usa a sintaxe SQL mais complexa. Um exemplo de uma consulta personalizada comum usa um caractere curinga para encontrar registros parcialmente correspondentes aos critérios especificados.

As etapas a seguir mostram como usar o código gerenciado do InfoPath para realizar uma pesquisa de caractere curinga em uma tabela SQL ou em uma tabela do Access usando oADOAdapterobjeto.

Mais Informações

O InfoPath permite que você converter uma conexão de dados de consulta como umAdoQueryConnectionobjeto. Isso oferece métodos para recuperar e definir informações sobre os seguintes itens:
  • A seqüência de conexão
  • O texto do comando SQL
  • O valor de tempo limite
Usando oAdoQueryConnectiono objeto, você pode alterar uma instrução SQL para executar operações mais complexas, como, por exemplo, uma consulta que usa caracteres curinga.

As informações neste artigo se aplica aos bancos de dados SQL e bancos de dados Access. Os exemplos seguintes usam o banco de dados Northwind incluído com o Microsoft Office Access 2007 e no Microsoft Office Access 2010.

Criar o banco de dados.

Se você ainda não foram usadas no banco de dados de exemplo Northwind a partir de sua versão do InfoPath, crie o banco de dados localmente. Para fazer isso, execute estas etapas:

  1. Inicie o Microsoft Office Access.
  2. NoModelos disponíveisseção, selecioneModelos de exemplo.
  3. Selecione oNorthwindbanco de dados e depois clique emCriar.

Criar um formulário que consulta o banco de dados.

Esta seção descreve como criar um formulário de consulta no InfoPath. Este exemplo usa a tabela de fornecedores do banco de dados Northwind. Para criar um formulário que essa tabela de consulta, siga as etapas que são fornecidas para sua versão do InfoPath.

O InfoPath 2010

Criar o modelo de formulário e, em seguida, defina o idioma de código do modelo de formulário para TRANSLATION FROM VPE FOR CSHARP. Para fazer isso, execute estas etapas:
  1. Inicie o InfoPath Designer 2010.
  2. NoModelos avançados de formulárioseção, selecioneBanco de dadose, em seguida, clique emDesign do formulário.
  3. No Assistente de conexão de dados, clique emSelecione o banco de dados.
  4. Localize a pasta onde você salvou o banco de dados Northwind, selecione o arquivo Northwind.accdb e, em seguida, clique emAbrir.
  5. NoSelecione a tabelajanela de rolagem na parte inferior da lista, selecione oFornecedorestabela e clique emOK.
  6. Certifique-se de que somente os campos a seguir são selecionados naFornecedorestabela:
    • ID
    • Empresa
    • Last_name
    • First_Name
    • Job_Title
    • Business_Phone
  7. Clique emAvançar.
  8. Clique emConcluirpara concluir o Assistente para conexão de dados.
  9. NoCampospainel, expanda odataFieldsnó e arraste a adicionard:fornecedoresnó da caixa sob aExecutar consultabotão.
  10. Quando solicitado, clique para selecionarTabela de repetição.
  11. NoCampospainel, expanda oqueryFieldsnó e arraste a adicionarq: fornecedoresnó da caixa sob aNovo registrobotão. (Isso adiciona automaticamente uma seção que tem controles.)
  12. Sob aDesenvolvedorClique emIdioma.
  13. NoLinguagem de programaçãoseção, emIdioma de código do modelo de formulário, selecioneTRANSLATION FROM VPE FOR CSHARPe, em seguida, clique emOK.

O InfoPath 2007

Crie o modelo de formulário. Para fazer isso, execute estas etapas:
  1. Inicie o InfoPath 2007.
  2. No painel de navegação dasPreencher um formuláriocaixa de diálogo, clique emCriar um modelo de formulário.
  3. NoCriar um modelo de formuláriojanela, Clique emEm branco,e, em seguida, clique emOK.
  4. Sobre oFerramentasmenu, clique emDados Conexõese, em seguida, clique emAdicionar. ODados ConexãoAbre a janela.
  5. NoConexão de dadosjanela, clique para Selecione oCriar uma nova conexão paracaixa de seleção, clique para Selecione oReceber dadoscaixa de seleção e clique emAvançar.
  6. Clique para selecionar oBanco de dados (Microsoft SQL Server. ou o Microsoft Office Access apenas)caixa de seleção e clique emAvançar.
  7. Clique emSelecione o banco de dados.
  8. Localize a pasta onde você salvou o banco de dados Northwind, selecione a pasta e, em seguida, clique emAbrir.
  9. NoSelecione a tabelacaixa de diálogo, rolagem na parte inferior da lista, selecione oFornecedorestabela e clique emOK.
  10. NoEstrutura da fonte de dadoslista, certifique-se de que apenas os seguintes cabeçalhos de coluna são selecionados:
    • ID
    • Empresa
    • First_Name
    • Last_name
    • Job_Title
    • Business_Phone
  11. Clique emAvançar.
  12. Clique emCriar modo de exibição de dados primeiroe, em seguida Clique emConcluirpara sair do Assistente para configuração de fonte de dados e criar o formulário padrão.
  13. NoFonte de dadospainel de tarefas, clique duas vezesdataFields.
  14. Mover od:fornecedoresnó para oDadosmodo de exibição do formulário.
  15. Quando solicitado, adicionard:fornecedorescomo umTabela de repetição.
  16. Sobre oModo de exibiçãomenu, clique emGerenciar Modos de exibição.
  17. NoModos de exibiçãopainel de tarefas, clique noConsultamodo de exibição.
  18. Sobre oFerramentasmenu, clique emOpções de formulário.
  19. NoCategorialista, clique emProgramação.
  20. NoIdioma de código do modelo de formulárioClique emTRANSLATION FROM VPE FOR CSHARPe, em seguida, clique emOK.

Alterar o formulário para executar uma consulta personalizada

Esta seção descreve como pesquisar registros com valores que se assemelhem a seqüência de pesquisa, mas que não correspondem exatamente a seqüência de caracteres. Para procurar por registros que possuem valores similares, você pode usar uma seqüência de caracteres curinga e oCOMOinstrução em uma consulta SQL. Quando o curinga de seqüência de caracteres e oCOMOinstrução são usados juntos, eles podem encontrar registros com base nos critérios de pesquisa de caractere curinga. Esses registros são retornados para o InfoPath.

Para alterar o formulário para executar uma consulta personalizada daCargocampo no InfoPath 2010 ou no InfoPath 2007, siga estas etapas:

  1. No modo de Design, clique com botão direito doExecutar consultabotão e depois clique emPropriedades do botão.
  2. Faça as seguintes alterações:
    • Alterar oAçãodo botãoRegras e código personalizado
    • Alterar oRótuloparaExecutar consulta
    • Alterar oIDparabtnQuery
  3. Clique noEditar o código do formuláriobotão para aplicar as alterações e inicie o Visual Studio Tools para o editor de aplicativos. Ele será aberto o manipulador de eventos btnQuery "Clicked".
  4. Substitua o comentário "/ / escreva código aqui" com o código a seguir:
    //Create an XPathNavigator object for the main data source
    XPathNavigator xnMain = this.MainDataSource.CreateNavigator();
     
    //Create an AdoQueryConnection from the main data source by "casting" the default
    //data connection to an "AdoQueryConnection"
    AdoQueryConnection cn = (AdoQueryConnection)this.DataConnections["Main connection"];
     
    //Obtain the default SQL command for the form.
    string strOrigSQLCommand = cn.Command.ToString();
     
     
     
    // Obtain the query node that you want to change.
    XPathNavigator xnSuppliersQuery = xnMain.SelectSingleNode("/dfs:myFields/dfs:queryFields/q:Suppliers", this.NamespaceManager);
     
    //Obtain the text that was entered for the wildcard character search, and then clear the current query parameter so that InfoPath will leave the current query parameter blank.
    string strJobTitle = xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(string.Empty);
     
    //Have InfoPath construct an SQL command that is based on all other field values.
    string strMySQLCommand = cn.BuildSqlFromXmlNodes(xnSuppliersQuery);
     
    //Save the other query items, and then clear the other query items before the next query.
    string strSupplierID = xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(string.Empty);
    string strCompany = xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(string.Empty);
    string strLastName = xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(string.Empty);
    string strFirstName = xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(string.Empty);
    string strBusPhone = xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(string.Empty);
     
    //Add Job_Title to the query so that Job_Title can support wildcard characters.
    if (strJobTitle != string.Empty)
    {
           if (strMySQLCommand != string.Empty)
                  strMySQLCommand += " AND ";
     
           //Check whether the user entered the wildcard character (%) as part of the title.
    if(strJobTitle.Contains("%"))
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "'";
           else
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "%'";               
    }
     
    //Construct the full query string.
    string strSQLQuery = strOrigSQLCommand;
    if (strMySQLCommand != string.Empty)
    strSQLQuery += " WHERE " + strMySQLCommand;
     
    //Set the command and run the query.
    cn.Command = strSQLQuery;
    cn.Execute();
     
    //Restore all the user entries to the Query fields so that the user entries will 
    //be available if you want to change and to rerun the query.
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(strSupplierID);
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(strCompany);
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(strLastName);
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(strFirstName);
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(strJobTitle);
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(strBusPhone);
     
    //Restore the default table command (for the next time).
    cn.Command = strOrigSQLCommand;
     
    //Clean up
    xnMain = null;
    cn = null;
    xnSuppliersQuery = null;
  5. Construir o projeto clicando oCompilaçãoitem de menu e, em seguida, clicando emCompilaçãonome do projeto.
  6. Salvar as alterações e, em seguida, retorne ao InfoPath.

Testar o código

O exemplo de código que é fornecido no procedimento anterior permite que você faça uma pesquisa em caractere curinga aCargocampo deFornecedorestabela. Fornecendo uma consulta de pesquisa, como% De venda, todos os registros retornados será ter contatos numa posição de vendas. Esses contatos podem ser um representante, um gerente ou um agente, desde que seus registros satisfaçam os critérios de pesquisa de% De venda. Contatos que não possuem "Vendas"Cargocampo serão filtrados.


Para verificar se todos os registros retornados tem contatos numa posição de vendas, siga estas etapas:
  1. Para 2010 do InfoPath:Sobre oHomena faixa de opções, clique emVisualização.
    Para o InfoPath 2007:Na barra de ferramentas, clique emVisualizaçãoe, em seguida, clique emFormulário.
  2. NoCargoconsulta de campo, tipo% De venda.
  3. Clique emExecute a consulta.

Os registros retornados pela consulta personalizada são todos contatos numa posição de vendas.

Propriedades

ID do artigo: 826992 - Última revisão: segunda-feira, 7 de fevereiro de 2011 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Palavras-chave: 
kbhowto kbmt KB826992 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 826992

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