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
- Uma fonte de dados (campo de tabela ou consulta etc) seguida de
- Um operador de comparação ( =, >, <> etc) seguido do
- 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
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
Otimo
Obrigado
Paulo