NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosOffice : Consultasavancadas_p2
Quer receber novidades e e-books gratuitos?
Lição 2 - Utilização de Critérios Avançados e Operadores

Neste tópico apresentarei diversas técnicas avançadas para pesquisas e filtros em consultas, com o Microsoft Access. Aprenderemos a utilizar Operadores, tais como Like (Como), In (Em) , Between (Entre); aprenderemos a utilizar os caracteres curinga "*" e "?". Na Lição 3 veremos a utilização das chamadas funções de agregação e domínio ( Mín, Máx, Dcount, etc).

Nota: Para uma introdução aos operadores Like, In, Between, OR e AND, consulta a Lição 14 do Módulo 3 do Curso de Access Básico: Utilizando Operadores para Definir Critérios de Pesquisa.

Vamos seguir a metodologia utilizada na Lição 1, ou seja, vamos criando consultas de exemplo e explicando os critérios e técnicas utilizados. Usaremos como base para este tópico o Banco de Dados curso_av.mdb, o qual você deve ter copiado, conforme orientações da Introdução desse tutorial.

Exemplo 01: Para início de conversa vamos criar uma consulta que exiba somente os pedidos para os meses de Janeiro e Fevereiro de 1996 (DataDoPedido).

Para criar a consulta proposta faça o seguinte: 
  • Abra o banco de dados curso_av.mdb.

  • Crie uma nova consulta baseada na tabela "Pedidos".

  • Adicione os campos : NúmeroDoPedido, CódigoDoCliente, DataDoPedido, PaísDeDestino.

  • Classifique a consulta em ordem ascendente do campo NúmeroDoPedido.

  • Para filtrar os pedidos cuja DataDoPedido esteja entre os meses de Janeiro e Fevereiro de 1996 coloque o seguinte critério, na linha critério na coluna DataDoPedido:


  • (Mês([DataDoPedido])=1 Ou Mês([DataDoPedido])=2) E Ano([DataDoPedido])=1996
    Sua grade deve estar semelhante a indicada na próxima figura:


    Consulta para exibir somente os pedidos de Janeiro e Fevereiro de 1996.
  • Dê um clique no botão bem da esquerda e observe os resultados. Você verá uma listagem com somente os pedidos para os meses de Janeiro e Fevereiro de 1996. Vamos analisar com um pouco mais de calma o critério utilizado nesta consulta.
  • Primeiro: Utilizamos a função mês para extrair apenas a informação referente ao mês do campo DataDoPedido. A função Mês recebe como parâmetro a DataDoPedido (Data Completa: dia, mês e ano) e retorna apenas o Mês, de uma forma numérica, isto é: Janeiro=1, Fevereiro=2, e assim por diante.

    A Primeira parte de critério: (Mês([DataDoPedido])=1 Ou Mês([DataDoPedido])=2), utiliza duas vezes a função Mês, ligando os resultados através do "Conectivo Lógico Ou". O Conectivo Ou está dizendo para o Microsoft Access o seguinte: "Para que você selecione um registro, o valor do mês da DataDoPedido deve ser um destes dois valores: 1=Janeiro ou 2=Fevereiro, isto é somente selecione aqueles pedidos , cujo mês da DataDoPedido for Janeiro Ou Fevereiro".

    A segunda parte do critério: E Ano([DataDoPedido])=1996, impõe mais uma condição, isto é, além do Mês ter que ser Janeiro OU Fevereiro, o ano, obrigatoriamente tem que ser 1996. Com isso o Microsoft Access somente retornará os Pedidos para os meses de Janeiro e Fevereiro do ano de 1996. Um erro bastante comum é utilizar, na primeira parte do critério um conectivo "E" ao invés do "Ou". Vamos pensar um pouco, o que significa um pedido ter que atender a condição (Mês([DataDoPedido])=1 E Mês([DataDoPedido])=2)? Significa que o mês da DataDoPedido, deve ser, ao mesmo tempo, Janeiro e Fevereiro, ora, uma data somente pode se referir a um determinado mês. Caso colocássemos um "E" ao invés de um "OU" ligando a condição do Mês, obteríamos como resultado nenhum registro retornado.
  • Volte para o Modo Estrutura ( dê um clique no botão bem da esquerda ) e troque o "OU" por um "E", conforme descrito na explicação do parágrafo anterior. Volte para o modo Folha de Dados e observe. Você deverá receber uma listagem em branco, conforme descrito anteriormente e indicado pela figura abaixo:



  • A Colocação de um "E" incorretamente, gerou uma listagem em branco.

  • Volte o modo estrutura e altero o E, colocado incorretamente no item anterior, novamente para OU.

  • Dê um clique no botão com o Disquete para salvar a consulta. O Microsoft Access solicita que você digite um nome para a consulta. Digite: Consulta 02 e dê um clique em OK.
  • Exemplo 02: Agora vamos alterar um pouco a nossa Consulta para adicionar mais critérios. Vamos manter o critério adicionado no ítem anterior (para filtrar apenas os registros dos meses de Janeiro e Fevereiro do ano de 1996 ) e adicionar mais um critério para que somente sejam exibidos os pedidos cujo PaísDeDestino seja Brasil ou Argentina.

    Para adicionar este critério faça o seguinte:
  • Se você não estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02

  • Adicione o seguinte critério na linha Critério da Coluna PaísDeDestino:


  • "Brasil" Ou "Alemanha"


  • Observe que mesmo que você não digite as aspas, ao sair do campo, o Microsoft Access coloca as aspas automaticamente. Isto acontece porque o campo PaísDeDestino é um campo do tipo texto. Critérios para campos do tipo texto devem, sempre, vir entre aspas.

  • Dê um clique no botão bem da esquerda para ir para o modo Folha de Dados. Você deverá receber uma listagem com somente os pedidos para os meses de Janeiro e Fevereiro de 1996 e cujo PaísDeDestino seja Brasil Ou Alemanha, conforme indicado pela figura abaixo:

  • Listagem após termos adicionado um Critério para o PaísDeDestino.

    Importante: Ao colocarmos critérios em mais de um campo - no nosso exemplo colocamos critérios nos campos DataDoPedido e PaísDeDestino - o Microsoft Access liga os critérios através de um operador "E". Isto significa que para um registro aparecer na listagem ele tem que satisfazer todos os critérios estabelecidos na linha critério, no nosso exemplo, o mês da DataDoPedido deve ser Janeiro ou Fevereiro, o ano deve ser 1996 e o PaísDeDestino deve ser Brasil ou Alemanha.

    Exemplo 03: Vamos continuar fazendo alterações na Consulta 02. Agora vamos pedir para que o Microsoft Access exiba uma listagem de todos os pedidos cujo mês seja Janeiro ou Fevereiro, o ano 1996 e o País seja Brasil e também sejam exibidos, todos os Pedidos cuja país seja Alemanha, independentemente da DataDoPedido e da Cidade.

    Para obter esta listagem faça o seguinte:
  • Se você não estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02.

  • Altere o critério na linha Critério da Coluna PaísDeDestino para: Brasil

  • Na linha de baixo - Linha Ou - , na coluna PaísDeDestino coloque o seguinte critério: Alemanha

  • Dê um clique no botão bem da esquerda para ir para o modo Folha de Dados e observe os resultados. Você deve receber uma listagem conforme indicado na figura abaixo:

  • Listagem com todos os Pedidos da Alemanha, independente da DataDoPedido.

    Importante: Esta consulta tem como objetivo salientar a utilização da linha "Ou" no modo estrutura da consulta. Critérios colocados nesta linha, são unidos com os critérios colocados na linha de cima através de um conectivo Ou. Por isso que deslocamos o critério "Alemanha" para esta linha. Com isso estamos dizendo ao Microsoft Access para pesquisar todos os pedidos cuja mês da DataDoPedido for igual a Janeiro ou Fevereiro e ano igual a 1996, com PaísDeDestino igual a Brasil (Linha Critério) "Ou" os Pedidos cujo PaísDeDestino seja Alemanha, independentemente da DataDoPedido.

    Se colocarmos mais de um critério dentro da linha Ou (em diferentes campos), estes são ligados através de um conectivo lógico E. Como regra geral podemos colocar da seguinte maneira:

    Critérios Dentro da mesma linha -> Ligados por um conectivo E
    Entre as Linhas Critério e Ou -> Ligados por um conectivo Ou.

    Exemplo 04: Agora vamos adicionar mais alguns campos e começar a utilizar pesquisas mais avançadas. Inicialmente vamos adicionar o campo NomeDaEmpresa, da tabela Clientes (Para isto precisaremos adicionar a tabela Clientes à nossa consulta). Depois utilizaremos o Operador Like para exibir somente os Pedidos para clientes cujo nome inicie pelas letras A, B, C, D, E, F ou G.

    Para criar a consulta proposta faça o seguinte:
  • Se você não estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02.

  • Exclua todos os Critérios colocados na Linha Critério e na Linha Ou

  • Adicione a tabela Clientes, para que você possa ter acesso ao campo NomeDaEmpresa. Para isso, dê um clique no botão "Adicionar Tabelas" (botão com um sinal de + amarelo). Na janela que surge dê um clique na tabela Clientes e depois dê um clique no botão adicionar. Dê um clique em OK para voltar para o Modo estrutura da Tabela.

  • Adicione o campo NomeDaEmpresa da tabela Clientes, retire a classificação do campo NúmeroDoPedido e classifique o campo NomeDaEmpresa em ordem Crescente.

  • Na linha critério, do campo NomeDaEmpresa, coloque o seguinte critério:


  • Como "[A-G]*"

  • Dê um clique no botão bem da esquerda e observe o resultado. Conforme você pode notar, o Microsoft Access somente exibe os Pedidos para os clientes cuja primeira letra do nome esteja na faixa de A até G, conforme indicado pela figura abaixo:

  • Utilização do Operador Like para exibir apenas os Pedidos para os Clientes cuja primeira letra do nome esteja na faixa de A até G.

    Existem alguns detalhes importantes a respeito da última consulta que devemos analisar:
  • Observe que para gerar a consulta estamos utilizando dados de duas tabelas: Pedidos e Clientes. Também observe que ao adicionar a tabela Clientes o Microsoft Access trouxe o Relacionamento entre as tabelas.Para detalhes sobre Relacionamentos consulte o Curso de Access Básico - Módulo 1. Um relacionamento do tipo Um Para Vários entre a tabela Cliente e a Tabela Pedidos. Com base no campo CódigoDoCliente na tabela Pedidos e do Relacionamento, o Microsoft Access localiza o registro correspondente na tabela Clientes.

  • Observe que o campo NomeDaEmpresa, que foi o último a ser adicionado, ficou bem à direita. Podemos deslocá-lo , mais para a esquerda, caso julguemos necessário. Para deslocar o campo NomeDaEmpresa, faça o seguinte: No modo estrutura dê um clique na coluna NomeDaEmpresa para selecionar a coluna (um clique na barrinha cinza, logo acima do nome do campo - NomeDaEmpresa). Após selecionada a coluna arraste-a para a nova posição. Para treinar, desloque a coluna NomeDaEmpresa para que fique entre as colunas NúmeroDoPedido e CódigoDoCliente

  • Finalmente, a utilização do Operador Like (Operador Como em Português). O Like é muito utilizado para pesquisas em campos do tipo Texto, como por exemplo Nome, Endereço, Observações, etc. No Nosso exemplo utilizamos o operador Like, juntamente com a seguinte indicação [A-G]*. A Parte [A-G] informa para o Microsoft Access que a primeira letra do campo NomeDaEmpresa, deve estar na faixa de A até G ( A, B, C, D, E, F ou G). O "*" indica que não interessa o que vier depois. Isto é justamente o que queremos: A Primeira Letra do Nome na faixa de A-G, independente do restante do nome. Resumindo o nosso critérios, teríamos:
  • Operador Like: Pesquisa um determinado padrão em campos de texto
    [A-G]: Primeira Letra do Nome na faixa de A até G
    *: Qualquer coisa que vier depois da primeira letra.
    Algumas observações importantes sobre o uso do Like:

    Quando um intervalo de caracteres é especificado, estes devem aparecer em uma ordem de classificação crescente (do menor para o maior). [A-Z] é um padrão válido, mas [Z-A] não o é.

    Um ponto de exclamação (!) no início de lista de caracteres significa que uma correspondência é realizada se qualquer caractere, com exceção daqueles em lista de caracteres, for encontrado. Quando utilizado fora de colchetes, o ponto de exclamação corresponde a si mesmo. Por exemplo o seguinte critérios Como "[!A-G]*", pediria para o Microsoft Access listar todos os pedidos, menos aqueles cuja primeira letra do campo NomeDaEmpresa esteja na faixa de A até Z. Na prática o Microsoft Access listaria apenas os pedidos cuja primeira letra do campo NomeDaEmpresa, fosse de H até Z.

    Você pode encontrar mais detalhes sobre o operador Like no Help do Microsoft Access, bem como na Lição 14 do Módulo 3, do Curso de Access Básico: Utilizando Operadores para Definir Critérios de Pesquisa

    Abaixo temos uma tabela com os caracteres curinga que podem ser utilizados com o operador Like:

    Caractere Utilização Exemplo
    * Coincide com qualquer número de caracteres. Pode ser utilizado como o primeiro ou o último caractere da seqüência de caracteres. qu* encontra que, quando e quanto
    ? Coincide com qualquer caractere alfabético isolado. B?la localiza bala, bola e bula
    [ ] Coincide com qualquer caractere que esteja entre os colchetes. B[ao]la localiza bala e bola, mas não bula
    ! Coincide qualquer caractere que não esteja entre os colchetes.
    b[!ae]la localiza bola e bula, mas não bela
    - Coincide com qualquer caractere de um intervalo de caracteres. Você deve especificar o intervalo em ordem crescente (de A a Z, e não de Z a A). b[a-c]la localiza bala, bbla e bcla
    # Coincide com um único algarismo qualquer. 1#3 localiza 103, 113, 123

    A seguir temos uma tabela com exemplos de utilização do operador Like:

    Exemplo Util. no Campo. Registros selecionados
    Like "*Mar*" NomeDaEmpresa Retorna somente os pedidos para as empresas em que aparece a palavra Mar em alguma parte do nome.
    Like "A*" NomeDaEmpresa Retorna somente as empresas em que o NomeDaEmpresa inicia com a letra A.
    Like "[A-G]*" NomeDaEmpresa Retorna somente as empresas em que o NomeDaEmpresa inicia com as letras na faixa de A até G: A, B, C, D, E, F, G.
    Like "*[aeiou]" NomeDaEmpresa Retorna somente as empresas em que o NomeDaEmpresa termina com vogal.
    Like "?r*" NomeDaEmpresa Retorna somente as empresas em que a segunda letra do nome é "r".
    Like "*e?" NomeDaEmpresa Retorna somente as empresas em que a penúltima letra do nome é "e".
    Not Like "[aeiou]*" NomeDaEmpresa Retorna somente as empresas em que a primeira letra do nome Não é vogal.
    Like "*" NomeDaEmpresa Retorna todas as empresas, é como se não existisse critério de filtragem.

    Vamos ver mais alguns exemplos de utilização do Operador Like.

    Exemplo 05: Utilize o Operador Like para obter uma listagem de todos os Pedidos para empresas que tenham as letras as letras "Sa" no início do campo NomeDaEmpresa.
      
    Para criar a consulta proposta faça o seguinte:
  • Se você não estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02.

  • Coloque o seguinte critério na linha Critério do campo NomeDaEmpresa: Como "SA*"

  • Vá para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

  • Lista de Pedidos para Clientes cujo NomeDaEmpresa inicia com "Sa".

    Observe que se o NomeDaEmpresa tiver "Sa" em qualquer outra parte, que não seja o início do nome, o respectivo registro não será selecionado. Além disso experimente colocar o SA todo em letra minúsculas. Você verá que para o Microsoft Access não fará diferença. Observe, também, que mesmo que você digitar Like no critério, após sair da linha critério, o Microsoft Access traduz o Like por um Como (tradução de Like para o Português). 

    Vamos aprimorar um pouco mais a utilização e o nosso conhecimento sobre o operador Like (Como).
     
    Exemplo 06: Crie uma consulta que selecione apenas os Pedidos para as empresas cujo campo NomeDaEmpresa possua a palavra "The" em qualquer parte do nome.
     
    Para criar a consulta proposta faça o seguinte:
  • Se você não estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02.

  • Coloque o seguinte critério na linha Critério do campo NomeDaEmpresa:


  • Como "*The*"

  • Vá para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

  • Listagem com Pedidos para empresa com The em qualquer parte do Nome.
     
    Observe a maneira como utilizamos o operador Como: Como "*The* . Com a utilização deste critério, estamos informando ao Microsoft Access que desejamos uma listagem somente dos pedidos para as empresas que possuam a palavra The em qualquer parte do nome, não importando o que vem antes (*) ou o que vem depois (*).

    Esta é uma das utilizações mais comuns para o operador Como. Por exemplo, se você tiver um campo NomeDoContribuinte e quiser pesquisar todos os contribuintes que tenham a palavra José no nome (José Da Silva, Maria José, Aparecido José, etc), bastaria colocar o seguinte critério no campo NomeDoContribuinte: Como "*José*". Caso você desejasse apenas aqueles que possuem Da Silva no final do nome (José da Silva, Maria Aparecida da Silva, Antônio Carlos da Silva , etc), bastaria colocar o seguinte critério: Como "*Da Silva". Observe que não vai o * depois do Da Silva, pois queremos somente aqueles em que o Da Silva aparece no final do nome e não em qualquer parte do nome. 
     
    Vamos continuar explorando a utilização do Operador Como, agora em conjunto com outros operadores ( Ou e E).

    Exemplo 07: Crie uma consulta que selecione apenas os Pedidos para as empresas cujo campo NomeDaEmpresa possua a palavra "The" em qualquer parte do nome e que o NomeDaEmpresa começa com as letras A ou B.
     
    Para criar a consulta proposta faça o seguinte:
  • Se você não estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02.

  • Coloque o seguinte critério na linha Critério do campo NomeDaEmpresa:


  • Como "*The*" E Como "[A-B]*"

  • Vá para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

  • Somente os Pedidos para empresas cujo nome começa com A ou B e que contenham a palavra The.

    A primeira parte de critério é igual a utilizada na consulta anterior ( Como "*The*" ), a qual pesquisa todas as empresas que contenham a palavra The em qualquer parte do nome. A Segunda parte de critério (Como "[A-B]*"), ligada a primeira parte pelo operador E, indica que a primeira letra do nome deve estar na faixa da A até B ([A-B]), não importando o que vem depois (*). Como as duas partes estão ligadas pelo operador E, ambas as condições devem ser satisfeitas para que o registro seja selecionado, isto é, o NomeDaEmpresa deve ter a palavra The em qualquer parte do nome e também deve iniciar com a letra A ou com a Letra B, para que seja selecionado.
     
    Abaixo segue um resumo sobre a utilização dos caracteres curingas:
     
    Você utiliza caracteres curinga como marcadores de outros caracteres quando você está especificando um valor que deseja localizar e:
  • Conhece apenas parte do valor.

  • Deseja localizar valores que comecem com uma letra específica ou coincidam com um determinado padrão.

  • Você pode utilizar os caracteres a seguir nas caixas de diálogo Localizar e Substituir, ou em consultas, comandos e expressões, para localizar coisas tais como valores de campo, registros ou nomes de arquivo.
  • Observações:  
     
    Os caracteres curinga devem ser utilizados com tipos de dados de texto, embora você possa, às vezes, utilizá-los com sucesso com outros tipos de dados, tais como datas, se você não alterar as propriedades das Configurações Regionais destes tipos de dados.
     
    Ao utilizar caracteres curinga para procurar um asterisco (*), um ponto de interrogação (?), um sinal numérico (#), um colchete de abertura ([) ou um hífen (-), você deve colocar o item que você está procurando entre colchetes. Por exemplo, para procurar um ponto de interrogação, digite [?] na caixa de diálogo Localizar. Quando você estiver procurando um hífen e outros caracteres simultaneamente, coloque o hífen antes ou depois de todos os outros caracteres dentro dos colchetes. (Entretanto, se houver um ponto de exclamação (!) depois do colchete de abertura, coloque o hífen depois do ponto de exclamação). Quando você estiver procurando um ponto de exclamação ou um colchete de fechamento, não é necessário colocá-los entre colchetes.
     
    Você não pode procurar os colchetes de abertura e fechamento ([ ]) juntos porque o Microsoft Access interpreta esta combinação como uma seqüência de comprimento zero.

    Se você estiver procurando valores em uma tabela que não seja do Microsoft Access, como, por exemplo, uma tabela do Microsoft SQL Server, pode ser necessário utilizar caracteres curinga diferentes. Verifique a documentação da fonte de dados para obter maiores informações.

    OBSERVAÇÕES SOBRE O TUTORIAL:

    O tutorial é composto de teoria e exemplos práticos, passo-a-passo. Para acompanhar todas as lições desse tutorial, você deve copiar o arquivo curso_av.mdb, o qual está disponível para Download, no formato compactado (.zip), no endereço a seguir:

    CLIQUE AQUI PARA COPIAR O ARQUIVO NECESSÁRIO PARA ACOMPANHAR OS EXEMPLOS DO TUTORIAL

    Para acompanhar os exemplos desse tutorial você já deve conhecer os conceitos básicos de criação de consultas no Microsoft Access. Para detalhes sobre a criação de consultas básicas no Microsoft Access, consulte o Curso Básico de Access. Um bom estudo a todos.

    Em caso de dúvidas, sobre o conteúdo e os exemplos do tutorial, ou para enviar sugestões sobre novos tópicos a serem incluídos, entre em contato através do e-mail: webmaster@juliobattisti.com.br. Somente serão respondidas dúvidas referentes às questões e tópicos contidos no tutorial. Não serão respondidas dúvidas sobre tópicos gerais do Microsoft Access ou sobre sistemas em desenvolvimento.

    Outras partes do Artigo
    Parte 1 Criação de campos calculados em consultas
    Parte 2 Utilização de Critérios Avançados e Operadores
    Parte 3 Utilização de Critérios Avançados e Operadores
    Parte 4 Exemplos de uso da Linha Totais e Consultas Parametrizadas
    Parte 5 Consultas de Referência Cruzada
    Parte 6 Consultas de Alteração, Exclusão e Acréscimo de Dados


    Clique aqui para voltar ao início da página

    Quer receber novidades e e-books gratuitos?

     
     

    Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

    Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

    Todos os direitos reservados, Júlio Battisti 2001-2024 ®

    LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

    DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI