Você está na página 1de 10

Lio 3 - Utilizao de Critrios Avanados e Operadores

Neste tpico apresentarei uma srie de exemplos de consultas, nas quais utilizarei os . Operadores Like (Como), In (Em) , Between (Entre), Negado, etc. Tambm apresentarei exemplos de consultas nas quais so utilizadas funes internas do Access, para a criao de critrios avanados.. Veremos o uso das seguintes funes: Direita Esquerda Meio IfImed Nota: Para uma introduo aos operadores Like, In, Between, OR e AND, consulta a Lio 14 do Mdulo 3 do Curso de Access Bsico: Utilizando Operadores para Definir Critrios de Pesquisa. Vamos seguir a metodologia utilizada nas lies anteriores, ou seja, vamos criando consultas de exemplo e explicando os critrios e tcnicas utilizados. Usaremos como base para este tpico o Banco de Dados curso_av.mdb, o qual voc deve ter copiado, conforme orientaes da Introduo desse tutorial. Na maioria dos exemplos dessa lio, iremos alterar a estrutura da Consulta 02, criada na Lio 2. Inicialmente vamos construir mais algumas consultas para fixar bem a utilizao do Operador Como. Exemplo 01: Crie uma consulta que selecione apenas os Pedidos para as empresas cujo campo NomeDaEmpresa inicie com a letra C e termine com a letra E. Para criar a consulta proposta faa o seguinte: Abra o banco de dados curso_av.mdb. Acesse o modo estrutura da Consulta 02. Exclua todos os critrios definidos anteriormente. Coloque o seguinte critrio na linha Critrio do campo NomeDaEmpresa: Como "C*E" V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Muitas vezes, na utilizao do operador Como existem duas ou mais maneiras de obter o mesmo resultado. Por exemplo se voc quiser uma listagem de todas as empresas cujo nome inicie na faixa de A at F. Voc pode usar o critrio tradicional: Como "[A-F]*". Outra maneira informar ao Microsoft Access que voc quer todas as empresas, menos aquelas

cuja primeira letra esteja na faixa de G at Z. Neste caso voc usaria o seguinte critrio: Como "[!G-Z]*" , o qual informa ao Microsoft Access para listar todas as empresas que No Iniciem com a primeira letra na faixa de G at Z, que o mesmo que dizer para trazer as que iniciem na faixa da A at F. O ponto de exclamao que informa o "No". Voc pode combinar operadores Como, utilizando o Operador E e o operador Ou. Vamos explorar um pouco mais a utilizao do Operador Como, devido a sua grande utilizao e importncia. Exemplo 02: Crie uma consulta que selecione apenas os Pedidos para as empresas cujo campo NomeDaEmpresa inicie com a letra B, a terceira letra seja um A ou todos os Pedidos para as Companhias cuja ltima letra do nome seja N, independente da letra inicial e da terceira letra. Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Elimine os critrios adicionados anteriormente. Coloque o seguinte critrio na linha Critrio do campo NomeDaEmpresa: Como "B?A*" Ou Como "*N" V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

NomeDaEmpresa iniciando com A, terceira letra B, ou terminando com N. Observe a utilizao do Ou ao invs do E. A Primeira parte - Como "B?A" - diz para o Microsoft Access trazer a listagem dos registros onde o campo Nome da Empresa tem na primeira letra um B, no importa o que tem na segunda (?) e na terceira um A . J a segunda parte do critrio - Como "N*" -, informa ao Microsoft Access para listar aquelas empresas cuja nome termina com a letra N. Como os dois critrios esto ligados por um Ou, isto significa que para estar na listagem. basta que o NomeDaEmpresa atenda a um dos critrios, isto , tenha na primeira letra um B e na terceira um A, ou que termine com N. Voc pode observar isto na listagem que existem empresas que no terminam com n, porm atendem ao primeiro critrio e existem empresas que no iniciam com B e tem na terceira letra um A, porm atendem ao segundo critrio. Isto comprova que quando duas condies estiverem ligadas pelo conectivo Ou, todos os registros que atenderem a uma das condies, estaro na listagem. Se atender as duas condies melhor ainda, tambm estaro na listagem. A nica hiptese de um registro no estar na listagem se no atender a nenhuma das duas condies ligadas pelo operador OU. Vamos comear a utilizar alguns outros operadores e funes do Microsoft Access para especificar critrios avanados em consultas.

Exemplo 03: Criar uma consulta que exiba somente os registros cujo NmeroDoPedido esteja entre 10500 e 10550 e que o PasDeDestino seja Brasil Ou EUA. Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Elimine os critrios adicionados anteriormente. Coloque o seguinte critrio na linha Critrio do campo NmeroDoPedido: Entre 10500 E 10550 Coloque o seguinte critrio na linha Critrio do campo PasDeDestino: Brasil Ou EUA V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Pedidos entre 10500 e 10550 e cujo Pas de Destino seja Brasil ou EUA. Temos dois aspectos importantes a serem observados nesta consulta. Primeiro a utilizao do Operador "ENTRE". Este Operador, normalmente, utilizado para pesquisar valores dentro de uma determinada faixa, sendo que o valor inicial o limite inferior e o valor final (Aps o E) o limite superior. No campo PasDeDestino colocamos o critrio Brasil Ou EUA, para pesquisar aqueles pedidos somente para o Brasil ou os EUA. Observe que quando dois ou mais critrios so especificados na mesma linha, o Microsoft Access liga os critrios atravs de um operador E. No nosso exemplo para que um registro seja selecionado ele dever ter o Nmero do Pedido entre 10500 e 10550 E tambm ter como PasDeDestino o Brasil ou EUA. Uma vez que os caracteres curinga, como *, so tratados como literais, voc no pode utiliz-los com o operador Between...And. Por exemplo, voc no pode utilizar 980* e 989* para localizar todos os cdigos postais que comeam com 980 e 989. Em vez disso, voc tem duas alternativas: pode adicionar uma expresso para a consulta que pegue os trs caracteres da esquerda do campo de texto e utilizar Between...And nesses caracteres, ou pode preencher os valores superior e inferior com caracteres extras. Exemplo 04: Criar uma consulta que exiba somente os registros cujo NmeroDoPedido esteja entre 10500 e 11000 e que a DataDoPedido esteja no perodo de Junho A Agosto de 1995 Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Elimine os critrios adicionados anteriormente. Coloque o seguinte critrio na linha Critrio do campo DataDoPedido: (Ms([DataDoPedido]) Entre 6 E 8) E Ano([DataDoPedido])=1995 Coloque o seguinte critrio na linha Critrio do campo NmeroDoPedido

Entre 10500 E 11000 V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Pedidos com Nmero entre 10500 E 11000, e Perodo de Junho a Agosto de 1995. Observe o critrio que utilizamos no campo DataDoPedido. Primeiro utilizamos a funo Ms para extrair somente o Ms da DataDoPedido. A funo Ms retorna uma valor Numrico (Jan=1, Fev=2, Mar=3, etc). Utilizamos o Operador Entre para exigir que somente fossem selecionados os registros cuja Ms esteja na faixa de 6 a 8 (Junho a Agosto). Como precisamos tambm fixar que somente desejamos o ano de 1995 utilizamos um operador E ( uma vez que as duas condies precisam ser atendidas - Ms de Junho a Agosto para o Ano de 1995) e o critrio Ano([DataDoPedido])=1995. Fizemos uso da funo Ano para extrair apenas o Ano da Data e compar-lo com 1995. Com a combinao dos dois critrios obtemos o resultado desejado para a DataDoPedido: Somente pedidos de Junho a Agosto e para o Ano de 1995. No campo NmeroDoPedido, utilizamos o operador Entre para limitar os Pedidos com NmeroDoPedido entre 10500 e 11000 para o Perodo especificado anteriormente. Utilizando funes em conjunto com os operadores, iremos construir consultas com critrios de filtragem bastante sofisticados. Vamos explorar um pouco mais as possibilidades de utilizao das funes em conjunto com os operadores. Exemplo 05: Criar uma consulta que exiba somente os registros cujo NomeDaEmpresa tenha BO como as duas primeiras letras. Ao invs de utilizar o operador Como, utilize a funo Esquerda. Nota: Para uma descrio completa das funes Esquerda, Direita e Meio, consulte as lies do Mdulo 3, do Curso de Access Bsico. Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Elimine os critrios adicionados anteriormente. Coloque o seguinte critrio na linha Critrio do campo NomeDaEmpresa: Esquerda([NomeDaEmpresa];2)="BO" V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Somente os Pedidos para os registros com NomeDaEmpresa iniciando com BO. Claro que, facilmente, poderamos obter os mesmos resultados, simplesmente utilizando o operador Como da seguinte maneira: Como "BO*". O Objetivo salientar a utilizao da funo Esquerda. Esta funo recebe dois parmetros: O Nome do Campo sobre o qual a funo vai atuar e o nmero de caracteres que ele deve retornar iniciando esquerda do campo. Os parmetros so separados por ponto e vrgula. Abaixo temos mais alguns exemplos de utilizao da funo esquerda: Vamos supor que o campo Nome tenha o valor "Jos Carlos da Silva" Exemplo de Uso da Funo Esquerda Resultado Esquerda([Nome];2) Esquerda([Nome];5) Esquerda([Nome];3) Esquerda([Nome];10) Esquerda([Nome];6) Jo Jos Jos Jos da Si Jos d

Observe que o espao em branco tambm conta como um caractere: Exemplos 4 e 5. Alm da funo esquerda, temos as funes Direita e Meio.A funo direita, inicia a direita de um campo e retorna um nmero determinado de valores. A sua sintaxe conforme indicado abaixo: Direita([NomeDoCampo];NmeroDeCaracteres) A funo Meio permite que seja retornado um determinado nmero de caracteres a partir de uma posio especfica dentro de um campo. Por exemplo posso retornar 4 caracteres, a partir do 5 caractere. A Sua sintaxe conforme indicado abaixo: Meio([NomeDoCampo];PosioOndeIniciar;NmeroDeCaracteres) Na tabela abaixo temos diversos exemplos de utilizao das funes Direita, Esquerda e Meio: Exemplo de Uso das Funes Direita, Esquerda e Meio Resultado Esquerda("ABCDEF123456";3") Direita("ABCDEF123456";3) Direita("ABCDEF123456";6) Meio("ABCDEF123456";2;3) Meio("ABCDEF123456";5;4) ABC 456 123456 BCD EF12

Estas funes so bastante teis e podem ser utilizadas em um sem nmero de situaes prticas do dia-a-dia.

Vamos supor que voc queira criar uma nova coluna que vamos chamar de CdigoClientePas. Este cdigo ser formado pelas 3 primeiras letras do campo NomeDaEmpresa e palas trs ltimas letras do campo PasDeDestino. Para criarmos esta nova coluna, teremos que utilizar as funes Esquerda (para extrair as 3 primeiras letras do campo NomeDaEmpresa) e a funo direita (para extrair as trs ltimas letras do campo PasDeDestino). Alm disto teremos que usar o Operador & para concatenar as duas partes. O Operador & utilizado no Microsoft Access para concatenar duas ou mais strings. Apenas lembrando do tpico inicial sobre consultas, podemos, sempre que necessrio, possvel criar novos campos nas consultas, os quais so derivados de dados de outros campos. Tanto podemos criar campos que efetuem clculos (por exemplo {PreoUnitrio]*[Quantidade} ) quanto campos que realizam operaes com Strings, conforme est sendo proposto no nosso exemplo de juntar as trs primeiras letras do campo NomeDaEmpresa, com as trs ltimas letras do campo PasDeDestino, para formarmos um novo campo que vamos chamar de CdigoApuraoEspecial. Ento, Mos a Obra !!!!!!!! Exemplo 06: Criar uma consulta que adicione um campo chamado CdigoApuraoEspecial, o qual ser formado pelas trs primeiras letras do campo NomeDaEmpresa e pelas trs ltimas letras do campo PasDeDestino Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Elimine os critrios adicionados anteriormente. V para a primeira coluna em branco, ao lado do campo PasDeDestino e digite o seguinte: CdigoApuraoEspecial: Esquerda([NomeDaEmpresa];3) & Direita([Pedidos].[PasDeDestino];3) V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Campo CdigoApuraoEspecial criado a partir dos campos NomeDaEmpresa e PasDeDestino. Nota: Utilizamos [Pedidos].[PasDeDestino] e no apenas [PasDeDestino], pois o campo PasDeDestino existe nas tabelas Clientes e Pedidos, e ambas fazem parte da consulta. Se colocssemos apenas [PasDeDestino], sem o nome da tabela, o Access no conseguiria executar a consulta, pois no seria possvel identificar de qual tabela a frmula deveria pegar o campo [PasDeDestino]. Relembrando o que j havamos visto no incio do captulo sobre consultas: Quando Estivermos adicionando campos calculados ou derivados de outros campos, o que vier antes dos dois pontos simplesmente o nome que ir aparecer no modo Folha De Dados,

conforme pode ser conferido na figura anterior. O que vem depois dos dois pontos a expresso que ira gerar os valores para o campo CdigoApuraoEspecial. A primeira parte da expresso: Esquerda([NomeDaEmpresa];3), retorna as trs primeiras letras do campo NomeDaEmpresa, as quais so concatenadas pelo operador & com as trs ltimas letras do campo PasDeDestino, as quais so retornadas atravs da utilizao da funo Direita([PasDeDestino];3). Outro fato importante a lembrar que esta coluna no far parte de nenhuma tabela e os dados nela contidos, no ficam armazenados no banco de dados. Toda vez que a consulta for executada, o Microsoft Access ir calcular os valores desta coluna, utilizando a expresso indicada anteriormente. Lembre que um dos princpios bsicos de projeto de banco de dados no armazenar campos calculados, conforme descrito no Curso de Access Bsico. Vamos sofisticar um pouco mais a nossa consulta. Exemplo 07: Criar uma consulta que adicione um campo chamado CdigoApuraoEspecial, o qual seja formado pelas trs primeiras letras do campo NomeDaEmpresa e pelas trs ltimas letras do campo PasDeDestino, mais um hfen ( - ), mais a palavra Barato se o frete for menor ou igual R$15,00 ou a palavra Caro se o frete for maior do que R$ 15,00. Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Adicione o campo Frete da tabela Pedidos. V para a coluna criada na Consulta anterior : CdigoApuraoEspecial e altera para que fique da seguinte maneira: CdigoApuraoEspecial: Esquerda([NomeDaEmpresa];3) & Direita([Pedidos].[PasDeDestino];3) & "-" & SeImed([Frete]<=15;"Barato";"Caro") V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Refinamentos no Campo CdigoApuraoEspecial. A novidade nesta consulta a utilizao da funo SeImed, conforme indicado abaixo: SeImed([Frete]<=15;"Barato";"Caro") Esta funo tem trs parmetros. O Primeiro faz um teste ( [Frete]<=15). Caso o teste retorne um valor verdadeiro, ou seja, o campo Frete tenha uma valor menor ou igual 15, o segundo parmetro ("Barato") retornado. Caso o teste ([Frete]<=15) seja falso, o terceiro parmetro ("Caro") retornado. Novamente utilizamos o operador & para concatenar as diversas partes que formam um campo do tipo Texto. Observe, tambm, que para adicionar o hfen ( "-" ), colocamos o esse entre aspas. Sempre que quisermos concatenar uma string, precisamos coloc-la entre aspas.

Vamos exercitar um pouco mais a funo SeImed ( IIF em Portugus). Exemplo 08: Criar uma consulta que adicione um campo chamado ImpostoFrete, o qual seja calculado da seguinte maneira: Se o frete for menor ou igual a R$15,00, o Imposto ser de 2 Reais, caso contrrio, o imposto ser de 5 Reais. Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. V para a primeira coluna em Branco, bem a direita e digite o seguinte: ImpostoFrete: SeImed([Frete] Entre 0 E 15;0,15;0,2) V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Campo Calculado para o valor do Imposto, com base no valor do Frete. Alm do uso da funo Selmed, temos mais dois pontos importantes a observar nesta consulta. Lembrando do primeiro tem sobre consultas, voc deve formatar a coluna ImpostoFrete, para que ela exiba os valores no formato de moeda. Para fazer isto clique com o boto direito sobre a coluna, no menu que surge clique em propriedades. Na janela que surge, no campo formato escolha moeda e em casas decimais escolha 2, d um clique em OK para fechar a janela das propriedades. Observe que dentro da funo Selmed, ao invs de utilizarmos um teste de comparao, utilizamos o operador Entre para testar se o Frete est entre 0 e 15. Voc pode ver que existem enormes possibilidades de utilizao de operadores em conjunto com as funes. Voc pode encontrar mais informao sobre Operadores e Funes na ajudo do Microsoft Access e tambm no Mdulo 3 do Curso de Access Bsico. Vamos aprender a utilizar mais um operador, o Operador IN ( Em). Exemplo 09: Criar uma consulta que liste apenas os Pedidos para o Brasil, Alemanha ou EUA. Utilizar o Operador IN (Em). Para criar a consulta proposta faa o seguinte: Se voc no estiver no Modo Estrutura, volte para o modo estrutura da Consulta 02. Se existir algum critrio definido, exclua-o. No campo PasDeDestino, na linha critrio, coloque o seguinte critrio: IN ("Brasil";"Alemanha";"EUA") V para o modo Folha de Dados e observe os resultados, conforme indicado na figura abaixo:

Consulta exibindo os pedidos para o Brasil, Alemanha ou EUA. Poderamos ter construdo esta consulta utilizando o Operador OU. Em termos de funcionalidade utilizar - Brasil Ou Alemanha Ou EUA, ou utilizar IN ("Brasil";"Argentina";"EUA"), no faz diferena nenhuma. Na prtica quando temos uma lista grande de valores a serem comparados, a utilizao do Operador IN torna-se mais prtica e de mais fcil entendimento. E se nos quisssemos uma consulta que listasse os pedidos para todos os pases, menos para o Brasil, Alemanha ou EUA. Bastaria colocar o seguinte critrio, no campo PasDeDestino. Negado Em ("Brasil";"Alemanha";"EUA") Neste caso utilizamos o operador negado, para informar ao Microsoft Access que queremos todos aqueles pedidos, exceto aquelas (Negado aqueles) cujo campo PasDeDestino seja Brasil, Alemanha ou EUA. Nunca demais ressaltar que a combinao de operadores e funes nos oferece um sem nmero de possibilidades. Vamos explorar um pouco mais a linha de totais em consultas, juntamente com o uso das chamadas funes de domnio ou funes agregadas. Volte para o modo Estrutura da Consulta 02 e d um clique no boto , este boto exibir uma linha adicional no modo estrutura: A Linha de Totais. Esta linha que nos permite a utilizao de diversas funes para a realizao de clculos e totalizaes nas tabelas. Abaixo segue um pequeno resumo de cada uma das opes da linha de totais: Selecione Soma Mdia Mnimo Mximo Contar Para Localizar o Total dos valores em um campo. Mdia dos valores em um campo Menor valor do campo Maior valor em um campo. Nmero de valores em um campo, no contando valores Nulos (em branco). Utilize com esses tipos de dados de campo Nmero, Data/Hora, Moeda e AutoNumerao Nmero, Data/Hora, Moeda e AutoNumerao Texto, Nmero, Data/Hora, Moeda e AutoNumerao Texto, Nmero, Data/Hora, Moeda e AutoNumerao Texto, Memorando, Nmero, Data/Hora, Moeda, AutoNumerao, Sim/No e Objeto OLE

Desv Var

Desvio padro dos valores em um campo. Varincia dos valores em um campo.

Nmero, Data/Hora, Moeda e AutoNumerao Nmero, Data/Hora, Moeda e AutoNumerao

Sobre funes agregadas e outras opes na linha Total da grade da estrutura da consulta Das 12 opes na linha Total da grade de estrutura da consulta, 9 so funes agregadas. Todas as funes, exceto Primeiro e ltimo, foram explicadas na tabela anterior. As outras trs opes da lista so explicadas na segunda tabela. Observao: As funes agregadas no incluiro em seus clculos registros que contenham valores em branco (Nulos). Por exemplo, a funo Contar retorna uma contagem de todos os registros sem valores Nulos. Existe uma forma de contar valores Nulos e voc pode converter valores Nulos em zeros para que sejam includos em um clculo. As Outras Opes disponveis esto indicadas na tabela abaixo: Selecione Agrupar Por Expresso Para Definir os grupos para os quais voc deseja efetuar os clculos. Por exemplo, para exibir totais de vendas por categoria, selecione Grupar Por para o campo NomeDaCategoria Criar um campo calculado que inclua uma funo agregada em sua expresso. Geralmente, voc cria um campo calculado quando deseja utilizar vrias funes em uma expresso. Especificar critrios para um campo que voc no esteja utilizando para definir agrupamentos. Se voc selecionar essa opo para um campo, o Microsoft Access ocultar o campo nos resultados da consulta limpando a caixa de seleo Mostrar.

Onde

Na Lio 4, vamos criar algumas consultas que utilizam diversas opes da linha Total, de tal forma que possamos fixar a utilizao destas funes.