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.
Clique aqui para voltar ao início
da página