Cláusula Where – Como escrever critérios no Access

O que é ?

A cláusula WHERE é uma frase que define onde e o quê selecionar no Access. Ela aparece sempre após uma ação (selecionar registros, aplicar um filtro etc) e define o critério de seleção. Ela aparece com diferentes nomes dependendo da ação :

critérios em uma SQL

criteria em funções de domínio agregado (DCount etc)

condiçãoonde ou wherecondition em métodos (Aplicar filtro, abrir formulário etc)

Elementos da frase

  1. Uma fonte de dados (campo de tabela ou consulta etc) seguida de
  2. Um operador de comparação ( =, >, <> etc) seguido do
  3. Critério propriamente dito

O seu formato genérico é:

Animal = Cachorro

ou mais exatamente,

NomeDoCampo = Critério

onde Animal seria o campo com tipos de animais e Cachorro é o critério.

Regras de escrita do elementos da frase

As regras básicas são as seguintes:

Nome do campo

Deve estar entre colchetes. Exemplo : [NomeDoCampo]

Nome de campo com espaços: Um campo chamado Meu Campo, deve ser escrito assim : [Meu_Campo] . Aliás, evite dar nomes com espaços em qualquer coisa no Access.

Critério

Dado tipo Texto (String) : Deve estar delimitada por aspas simples ( ‘ ).

Exemplo : [Nome] = ‘José’

Dado tipo Data: Deve estar delimitada pelo símbolo (#).

Exemplo: [Aniversario] > #28/01/08#

Dado tipo Numérico : Não precisam de delimitadores.

Exemplo : [Idade] = 25

Dados tipo Sim/Não : Você deve usar os valores numéricos correspondentes onde 0 (zero) equivale a Não e -1 equivale a Sim.

Exemplo : [Trabalha] = -1

Problema com datas

O Access armazena as datas internamente na tabelas no formato (yyyy/mm/dd) e este é o formato reconhecido nas comparações. Quando escrevemos 28/01/08 num campo, o valor armazenado na tabela é 2008/01/28. Por isso, quando usar datas em um critério elas devem ser expressas no formato (yyyy/mm/dd). Você transforma uma data do formato dd/mm/yy em yyyy/mm/dd com uma das seguintes funções:

Para valor literal = 28/01/08

Format(“28/01/08”, “yyyy\/mm\/dd”)

Para uma variável

Format(Variavel, “yyyy\/mm\/dd”)

Para um campo chamado NomeDoCampo em um formulário

Format(Me.NomeDoCampo, “yyyy\/mm\/dd”)

Problema com números

O Access não reconhece a vírgula como separador decimal. Essa é a origem da mensagem de erro:

Erro 3075 (Erro de sintaxe (vírgula) na expressão de consulta …)

Uma maneira de contornar esse problema é converter tanto a fonte dos dados como o número usado no critério para String e então fazer a comparação entre as String’s.

Use o código abaixo para fazer isso. Nele a conversão da fonte dos dados para String é feita pela função CStr e a conversão do número do critério através das aspas simples (elas foram enfatizadas em vermelho para facilitar a visualização).

“CStr([NomeDoCampo]) = ” & Numero & “

onde [NomeDoCampo] é o nome do campo fonte dos dados e Numero pode ser:

um literal:

DoCmd.ApplyFilter , CStr([NomeDoCampo]) = ” & 1,5 & “

uma variável:

Dim varNúmero as Single
varNumero = 1,5
DoCmd.ApplyFilter , “CStr([NomeDoCampo]) = ” & varNumero & “

ou um campo de um formulário (Por ex.: CampoDoForm)

DoCmd.ApplyFilter, “CStr([NomeDoCampo]) = ” & Me.CampoDoForm & “

Baixar o exemplo

Veja os termos de uso na página Sobre

3 Responses to Cláusula Where – Como escrever critérios no Access

  1. xrfs disse:

    ola tenho uma duvida nao estou conseguindo fazer no access esta tabela tenho 2 colunas
    1ª data
    2ª numeros
    onde tenho varias datas e varios numeros aleatorios
    so que quando usa esta forma nao esta aceitando poderia me auxiliar
    Código Dta c1
    1 15/9/1962 8031
    2 6/10/1962 4058
    3 17/10/1962 1096

    SELECT c1.Dta, c1.c1 ,count( c1.Dta, c1.c1)
    FROM c1
    group by c1.Dta, c1.c1
    order by c1.Dta, c1.c1
    estou usando esta formula mas nao estou conseguindo somar quantas vezes saiu um determinado nº e a data com fazer uma formula para que conte quantas vezes tem o numero quais as data
    obrigado

  2. Márcio disse:

    Otimo

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: