As aspas, tanto em vba quanto diretamente na origem dos campos, são usadas mais ou menos assim:
DLookup("NomeCompleto", "tblClientes", "Código=25")No nosso DLookup, que significa pesquisa, separamos os elementos por vírgula, e cada elemento vem dentro de aspas. No exemplo acima, temos três elementos envolvidos na pesquisa. Temos o campo "NomeCompleto", que se encontra na tabela "tblClientes", e será filtrado pelo Código de número 25. Pois bem, nesse exemplo, estamos passando o código diretamente no critério, no caso, o 25. Isso, no entanto, engessa a pesquisa, ou seja, toda vez que precisarmos mudar o código, teremos que alterar diretamente no vba. Para evitar isso, podemos usar um campo no formulário. Nesse caso, termos que informar, no vba, o nome do campo. Vamos supor que o campo se chama txtCódigo. Não podemos simplesmente colocar o nome do campo no lugar do 25, pois o nosso código iria interpretar tudo como sendo o valor a ser pesquisado, e não o campo:
Errado: DLookup("NomeCompleto", "tblClientes", "Código=Me!txtCódigo")
Certo: DLookup("NomeCompleto", "tblClientes", "Código=" & Me!txtCódigo)
É por isso que fazemos esse jogo de aspas, para que o código possa diferenciar entre o valor exato a ser pesquisado ou buscar esse valor em um campo do formulário. Outra questão é a diferença entre valores numéricos e valores de texto. Nesse último caso, acrescentamos as aspas simples, e por conseguinte, precisamos completar o código com aspas simples e duplas ao final:
DLookup("NomeCompleto", "tblClientes", "Código='" & Me!txtCódigo & "'")Temos ainda a diferença de pesquisa por data e hora:
DLookup("NomeCompleto", "tblClientes", "Data=#" & Me!txtData & "#")Como a data e a hora, em critérios de pesquisa, precisam estar entre o símbolo #, e como essa data ou hora se encontra em um campo do formulário, precisamos colocar dessa maneira acima descrita.
Quando formos usar isso diretamente na origem do campo, mudamos as vírgulas por ponto e vírgula:
DLookup("NomeCompleto";"tblClientes";"Data=#" & Me!txtData & "#")Note que essa sintaxe é similar tanto com DLookup quanto com seus similares DCount, DSum, etc e o jogo de aspas só se verifica no critério ao final do código. O que vem antes, permanece inalterado:
DLookup("NomeCompleto", "tblClientes", "Código='" & Me!txtCódigo & "'")
Só o que está em vermelho é que se altera dependendo da condição. O que vem antes pode se alterar dependendo do tipo de pesquisa, e não da condição da pesquisa. Por exemplo:
1 -
DCount("*", "tblClientes")2 -
DCount("*", "tblClientes", "Data=#" & Me!txtData & "#")3 -
DCount("NomeCliente", "tblClientes", "Data=#" & Me!txtData & "#")No exemplo 1, o "*" indica uma contagem de todos os registros da tabela.
No exemplo 2, temos um critério. Nesse caso, irá filtrar todos os clientes de uma determinada data.
No exemplo 3, queremos a quantidade de registros de um determinado cliente em uma mesma data. Isso seria para o caso, por exemplo, de querermos saber quantas vezes o cliente fez compras em um mesmo dia.