Como utilizar caracteres universais numa consulta de formulário do InfoPath, quando se liga a uma origem de dados ADO

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

Nesta página

Sumário

O Microsoft Office InfoPath simplifica enlace para o Microsoft SQL Server ou para o Microsoft Access. O InfoPath pode gerar automaticamente consultas de tabela simples e directa a uma base de dados SQL ou a uma base de dados do Access utilizando o Microsoft ActiveX Data Objects (ADO). Em seguida, o InfoPath activa os resultados da consulta que são apresentadas e editado no formulário.

Para consultas mais avançadas, o InfoPath disponibiliza vários métodos de programação para o utilizador avançado ou do dono da obra. Estes métodos de programação permitem que o utilizador avançado ou o programador para criar formulários que podem executar uma consulta personalizada que utiliza a sintaxe SQL mais complexa. Um exemplo de uma consulta personalizada comum utiliza um carácter universal para localizar registos que correspondam parcialmente os critérios especificados.

Os seguintes passos mostram como utilizar o código gerido no InfoPath para efectuar uma procura de caracteres universais numa tabela de SQL ou numa tabela do Access utilizando o' ADOAdapter 'objecto.

Mais Informação

O InfoPath permite-lhe associar uma ligação de dados de consulta como umAdoQueryConnectionobjecto. Isto dá-lhe métodos para obter e definir informações sobre os seguintes itens:
  • A cadeia de ligação
  • O texto do comando SQL
  • O valor de limite de tempo
Utilizando oAdoQueryConnectiono objecto, é possível alterar a instrução de SQL para executar operações mais complexas, tais como uma consulta que utiliza caracteres universais.

As informações neste artigo aplica-se a bases de dados SQL e a bases de dados do Access. Os exemplos seguintes utilizam a base de dados Adamastor está incluída no Microsoft Office Access 2007 e no Microsoft Office Access de 2010.

Criar a base de dados

Se ainda não utilizou a base de dados de exemplo Adamastor da versão do InfoPath, crie a base de dados localmente. Para tal, siga estes passos:

  1. Inicie o Microsoft Office Access.
  2. NaModelos disponíveissecção, seleccioneModelos de exemplo.
  3. Seleccione aAdamastorbase de dados e, em seguida, cliqueCriar.

Estruturar um formulário que consulta a base de dados

Esta secção descreve como estruturar um formulário de consulta no InfoPath. Este exemplo utiliza a tabela de fornecedores da base de dados Adamastor. Para criar um formulário que esta tabela de consulta, siga os passos que são fornecidos para a 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 c#. Para tal, siga estes passos:
  1. Inicie o Designer de 2010 do InfoPath.
  2. NaModelos de formulário avançadosecção, seleccioneBase de dadose, em seguida, clique emEstruturar formulário.
  3. No Assistente de ligação de dados, clique emSeleccione a base de dados.
  4. Localize a pasta onde guardou a base de dados Adamastor, seleccione o ficheiro Northwind.accdb e, em seguida, clique emAbrir.
  5. NaSeleccione a tabelajanela, desloque-se para o fim da lista, seleccione aFornecedorestabela e, em seguida, cliqueOK.
  6. Certifique-se de que apenas os campos seguintes estão seleccionados noFornecedorestabela:
    • ID
    • Empresa
    • Apelido
    • Nome
    • Job_Title
    • Business_Phone
  7. Clique emSeguinte.
  8. Clique emDe conclusãopara concluir o Assistente de ligação de dados.
  9. NaCampospainel, expanda o' dataFields 'nó e, em seguida, arraste a adicionard:fornecedoresnó para a caixa sob oExecutar consultabotão.
  10. Quando lhe for pedido, clique para seleccionarTabela de repetição.
  11. NaCampospainel, expanda oqueryFieldsnó e, em seguida, arraste a adicionarq: fornecedoresnó para a caixa sob oNovo registobotão. (Isto adiciona automaticamente uma secção com controlos.)
  12. Sob oPara programadoresClique emIdioma.
  13. NaLinguagem de programaçãosecção, emLinguagem de código do modelo de formulário, seleccioneC#e, em seguida, clique emOK.

O InfoPath 2007

Crie o modelo de formulário. Para tal, siga estes passos:
  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. NaCriar um modelo de formuláriojanela, Clique emEnsaio em branco,e, em seguida, clique emOK.
  4. Sobre oFerramentasmenu, clique emDados Ligações de acessoe, em seguida, clique emAdicionar. ODados Ligaçãoé aberta a janela.
  5. NaLigação de dadosjanela, clique para Seleccione aCriar uma nova ligaçãocaixa de verificação, clique para Seleccione aReceber dadoscaixa de verificação e, em seguida, clique emSeguinte.
  6. Clique para seleccionar oA base de dados (Microsoft SQL Server ou apenas o Microsoft Office Access)caixa de verificação e, em seguida, clique emSeguinte.
  7. Clique emSeleccione a base de dados.
  8. Localize a pasta onde guardou a base de dados Adamastor, seleccione a pasta e, em seguida, clique emAbrir.
  9. NaSeleccione a tabelacaixa de diálogo, desloque-se para o fim da lista, seleccione aFornecedorestabela e, em seguida, cliqueOK.
  10. NaEstrutura da origem de dadoslista, certifique-se de que apenas os seguintes cabeçalhos de coluna estão seleccionados:
    • ID
    • Empresa
    • Nome
    • Apelido
    • Job_Title
    • Business_Phone
  11. Clique emSeguinte.
  12. Clique emDesenhar a vista de dados primeiroe, em seguida, Clique emDe conclusãopara sair do Assistente de configuração de origens de dados e a construção o formulário predefinido.
  13. NaOrigem de dadosPainel de tarefas, faça duplo clique em' dataFields '.
  14. Mover od:fornecedoresnó para oDadosvista do formulário.
  15. Quando lhe for pedido, adicionard:fornecedorescomo umTabela de repetição.
  16. Sobre oVistamenu, clique emGerir Vistas.
  17. NaVistasPainel de tarefas, faça clique sobre oConsultavista.
  18. Sobre oFerramentasmenu, clique emOpções de formulário.
  19. NaCategorialista, clique emProgramação.
  20. NaLinguagem de código do modelo de formulárioClique emC#e, em seguida, clique emOK.

Alterar o formulário para ser executada uma consulta personalizada

Esta secção descreve como procurar registos que têm valores que se assemelham a cadeia de procura, mas que não correspondem exactamente à cadeia. Para procurar registos que têm valores semelhantes, pode utilizar uma cadeia de caracteres universais e oTAL COMOdeclaração numa consulta SQL. Quando o carácter universal de carácter cadeia e oTAL COMOdeclaração são utilizados em conjunto, podem localizar registos com base nos critérios de procura de caracteres universais. Estes registos são devolvidos, em seguida, o InfoPath.

Para alterar a forma para executar uma consulta personalizada dasCargocampo em 2010 do InfoPath ou no InfoPath 2007, siga estes passos:

  1. No modo de estrutura, faça duplo clique noExecutar consultabotão e, em seguida, cliquePropriedades do botão.
  2. Efectue as seguintes alterações:
    • Alterar oAcçãodo botão paraRegras e código personalizado
    • Alterar oRótuloparaExecutar consulta
    • Alterar oIDparabtnQuery
  3. Faça clique sobre oEditar código do formuláriobotão para aplicar as alterações e, em seguida, inicie o Visual Studio Tools para o editor de aplicações. Este é aberto o processador de eventos de "Clicked" btnQuery.
  4. Substituir o comentário "/ / escreva o código aqui" com o seguinte código:
    //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. Criar o projecto, fazendo clique sobre oCompilaçãoitem de menu e, em seguida, clicando emCompilaçãonome do projecto.
  6. Guardar as alterações e, em seguida, regresse ao InfoPath.

Testar o código

O código de exemplo que é fornecido com o procedimento anterior permite-lhe efectuar uma procura de caracteres universais doCargocampo deFornecedorestabela. Fornecendo uma consulta de procura, tais como% De venda, todos os registos que são devolvidos irá tem contactos em posição de vendas. Estes contactos podem ser um representante, um gestor ou um agente desde que o respectivo registo cumpre os critérios de procura do% De venda. Contactos que não tenham "Vendas" naCargocampo são filtrados.


Para verificar se todos os registos que são devolvidos tem contactos em posição de vendas, siga estes passos:
  1. Para o InfoPath 2010:Sobre oHome pageno Friso, clique emPré-visualização.
    Para o InfoPath 2007:Na barra de ferramentas, clique emPré-visualizaçãoe, em seguida, clique emFormulário.
  2. NaCargocampo de consulta, tipo% De venda.
  3. Clique emExecute consulta.

Os registos que são devolvidos pela consulta personalizada estão todos os contactos em posição de vendas.

Propriedades

Artigo: 826992 - Última revisão: 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 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: 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