Ao usar o Microsoft Access, muitas vezes será preciso trabalhar com valores que não estão diretamente em seus dados. Por exemplo, você deseja calcular o imposto sobre vendas em um pedido ou calcular o valor total do pedido em si. Você pode calcular esses valores usando expressões. Para usar expressões, primeiro você deve gravá-las usando a sintaxe correta. A sintaxe é o conjunto de regras segundo as quais as palavras e os símbolos em uma expressão são corretamente combinados. As expressões do Access usam uma linguagem que, inicialmente, é um pouco difícil de ler. No entanto, com um bom entendimento da sintaxe de expressões e um pouco de prática, fica muito mais fácil.
Neste artigo
Visão geral de expressões
Um expressão é uma combinação de alguns ou de todos estes elementos: funções internas ou definidas pelo usuário, identificadores, operadores, valores e constantes que são avaliados como um único valor.
Por exemplo, a expressão a seguir contém componentes comuns:
=Sum([Purchase Price])*0.08
-
Sum() é uma função interna
-
[Purchase Price] é um identificador
-
* é um operador matemático
-
0.08 é uma constante
Essa expressão pode ser usada na caixa de texto em um rodapé de formulário ou rodapé de relatório para calcular o imposto sobre vendas de um grupo de itens.
Expressões podem ser muito mais complexas ou muito mais simples do que esse exemplo. Por exemplo, esta expressão Booliano consiste em apenas um operador e uma constante:
>0
Essa expressão retorna:
-
True quando comparada com um número maior do que 0.
-
False quando comparada com um número menor do que 0.
Você pode usar essa expressão na propriedade Validation Rule de um campo de controle ou tabela para garantir que somente valores positivos sejam inseridos. As expressões são usadas em vários lugares para executar cálculos, manipular caracteres ou testar dados. Tabelas, consultas, formulários, relatórios e macros, todos têm propriedades que aceitam uma expressão. Por exemplo, você pode usar expressões nas propriedades Control Source e Default Value de um controle. Você também pode usar expressões na propriedade Validation Rule para um campo da tabela.
Componentes de expressões
Para criar uma expressão, você pode combinar identificadores usando funções, operadores, constantes e valores. Qualquer expressão válida deve conter pelo menos um identificador ou pelo menos uma função e também pode conter constantes ou operadores. Você também pode usar uma expressão como parte de outra expressão, geralmente, como um argumento de uma função. Isso é chamado de aninhamento de uma expressão.
-
Identificadores O formato geral é:
[Collection name]![Object name].[Property name]
Você só precisa especificar partes suficientes de um identificador para torná-lo exclusivo no contexto da expressão. Não é incomum um identificador assuma a forma [Object name].
-
Funções O formato geral é:
Function(argument, argument)
Normalmente, um dos argumentos é um identificador ou uma expressão. Algumas funções não precisam de argumentos. Antes de usar uma função específica, revise a sintaxe da função. Para saber mais, confira Funções (organizadas por categoria).
-
Operadores O formato geral é:
Identifier operator identifier
Há exceções a esse formulário, como detalhado na seção Operadores.
-
Constantes O formato geral é:
Identifier comparison_operator constant
-
Valores Os valores podem ocorrer em vários locais em uma expressão.
Objetos, coleções e propriedades
Todas as tabelas, consultas, formulários, relatórios e campos em um banco de dados do Access são chamados individualmente de objetos. Cada objeto tem um nome. Alguns objetos já são nomeados, como a tabela Contatos em um banco de dados criado com o modelo de Contatos do Microsoft Office Access. Ao criar um novo objeto, você dá um nome a ele.
O conjunto de todos os membros de determinado tipo de objeto é conhecido como um conjunto. Por exemplo, o conjunto de todas as tabelas em um banco de dados é um conjunto. Alguns objetos que são membros de um conjunto no banco de dados também podem ser conjuntos que contêm outros objetos. Por exemplo, um objeto de tabela é uma coleção que contém objetos de campo.
Os objetos têm propriedades, que descrevem e fornecem uma maneira de alterar características do objeto. Por exemplo, um objeto de consulta tem uma propriedade Modo de Exibição Padrão que descreve e permite que você especifique como a consulta aparecerá quando for executada.
O diagrama a seguir ilustra o relacionamento entre conjuntos, objetos e propriedades:
|
3 Uma propriedade 2 Um objeto 1 Um conjunto |
Identificadores
Quando você usa um objeto, um conjunto ou uma propriedade em uma expressão, refira-se a esse elemento usando um identificador. Um identificador inclui o nome do elemento que você está identificando e também o nome do elemento ao qual ele pertence. Por exemplo, o identificador de um campo inclui o nome do campo e o nome da tabela à qual o campo pertence. Um exemplo de tal identificador é:
[Customers]![BirthDate]
Em alguns casos, o nome de um elemento funcionará por si só como identificador. Isso é verdadeiro quando o nome do elemento é exclusivo no contexto da expressão que você está criando. O restante do identificador está implícito no contexto. Por exemplo, se você estiver criando uma consulta que usa uma única tabela, os nomes de campos funcionarão como identificadores, pois os nomes dos campos em uma tabela devem ser exclusivos nessa tabela. Como você está usando apenas uma tabela, o nome da tabela é implícito em qualquer identificador usado na consulta para se referir a um campo.
Em outros casos, você deve ser explícito sobre as partes de um identificador para que uma referência funcione. Isso é verdadeiro quando um identificador não é exclusivo no contexto da expressão. Quando há ambiguidade, você deve indicar explicitamente partes suficientes do identificador para torná-lo exclusivo no contexto. Por exemplo, suponha que você esteja criando uma consulta que usa uma tabela denominada Produtos e uma tabela chamada Pedidos, e ambas as tabelas têm um campo chamado IDdoProduto. Nesse caso, o identificador que você usa na consulta para se referir a um campo IDdoProduto deve incluir o nome de tabela além do nome do campo. Por exemplo:
[Products]![ProductID]
Operadores de identificador Há três operadores que você pode usar em um identificador:
-
O operador de negação (!)
-
O operador de ponto (.)
-
O operador de colchetes ([ ])
Você usa esses operadores colocando cada parte do identificador entre colchetes e unindo-as usando um operador de negação ou de ponto. Por exemplo, um identificador para um campo chamado Sobrenome em uma tabela chamada Funcionários pode ser expressado como [Employees]![Last Name]. O operador de negação informa ao Access que se trata de um objeto que pertence ao conjunto que precede o operador de negação. Nesse caso, [Sobrenome] é um objeto de campo que pertence ao conjunto [Funcionários], que também é um objeto de tabela.
Especificamente, você nem sempre precisa digitar colchetes ao redor de um identificador ou identificador parcial. Se houver sem espaços ou outros caracteres especiais no identificador, o Access adicionará automaticamente os colchetes quando ler a expressão. No entanto, é recomendável digitar os colchetes por conta própria Isso ajuda a evitar erros e também funciona como uma indicação visual de que determinada parte de uma expressão é um identificador.
Funções, operadores, constantes e valores
Para criar uma expressão, você precisa de mais do que identificadores, você precisa realizar uma ação de algum tipo. Você usa funções, operadores e constantes para executar ações em uma expressão.
Funções
Uma função é um procedimento que você pode usar em uma expressão. Algumas funções, como Data, não exigem entrada para funcionar. No entanto, a maioria das funções exige entradas, chamadas de argumentos.
No exemplo no início deste artigo, a função PartData usa dois argumentos: um argumento interval (com um valor "yyyy") e um argumento date (com um valor de [Customers]![BirthDate]). A função PartData requer pelo menos dois argumentos (interval e date), mas aceita até quatro argumentos.
A lista a seguir mostra algumas funções que são comumente usadas em expressões. Clique no link de cada função para obter mais informações sobre a sintaxe que você usa com essa função.
-
A função Data é usada para inserir a data atual do sistema em uma expressão. É comumente utilizado com a função Formatar e também é usado em identificadores de campo para campos que contêm dados de data/hora.
=Date()
-
A função PartData é usada para determinar ou extrair parte de uma data, geralmente, uma data obtida de um identificador de campo, mas, às vezes, um valor de data que é retornado por outra função, como Data.
DatePart ( "yyyy", Date())
-
A função DifData é usada para determinar a diferença entre duas datas, geralmente, entre uma data obtida de um identificador de campo e uma data que é obtida usando a função Data.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
A função Formatar é usada para aplicar um formato a um identificador, além de aplicar um formato aos resultados de outra função.
Format([Date],"ww")=Format(Now(),"ww")-1
-
A função SeImed é usada para avaliar uma expressão como verdadeira ou falsa e retornar um valor especificado se a expressão for avaliada como verdadeira e outro valor especificado se a expressão for avaliada como falsa.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
A função EmSeq é usada para procurar a posição de um caractere ou cadeia de caracteres dentro de outra cadeia de caracteres. A cadeia de caracteres que é pesquisada normalmente é obtida de um identificador de campo.
InStr(1,[IPAddress],".")
-
Esquerda, Meio e Direita Essas funções são usadas para extrair os caracteres de uma cadeia de caracteres, começando pelo caractere mais à esquerda, uma posição específica no meio ou com o caractere mais à direita. Elas são usadas em conjunto com a função EmSeq. A cadeia de caracteres da qual essas funções extraem caracteres normalmente obtida de um identificador de campo.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Para obter uma lista de funções, confira o artigo Funções (organizadas por categoria).
Operadores
Um operador é uma palavra ou um símbolo que indica uma relação específica aritmética ou lógica entre os elementos de uma expressão. Os operadores podem ser:
-
Aritmético, como o sinal de adição (+).
-
Comparação, como o sinal de igualdade (=).
-
Lógico, como Not.
-
Concatenação, como &.
-
Especial, como Like.
Operadores são geralmente usados para indicar uma relação entre dois identificadores. As tabelas a seguir descrevem os operadores que você pode usar em expressões do Access.
Aritmético
Você usa os operadores aritméticos para calcular um valor de dois ou mais números ou trocar o sinal de um número positivo para negativo.
Operador |
Finalidade |
Exemplo |
---|---|---|
+ |
Somar dois números. |
[Subtotal]+[ImpostoVendas] |
- |
Encontrar a diferença entre dois números ou indicar o valor de um número negativo. |
[Preço]-[Desconto] |
* |
Multiplicar dois números. |
[Quantidade]*[Preço] |
/ |
Dividir o primeiro número pelo segundo número. |
[Total]/[ContagemItens] |
\ |
Arredondar ambos os números para números inteiros, dividir o primeiro número pelo segundo número e truncar o resultado como um inteiro. |
[Registrado]\[Salas] |
Mod |
Dividir o primeiro número pelo segundo número e retornar somente o resto. |
[Registrado] Mod [Salas] |
^ |
Elevar um número à potência de um expoente. |
Número ^ Expoente |
Comparação
Você usa os operadores de comparação para comparar valores e retornar um resultado é verdadeiro, falso ou nulo (um valor desconhecido).
Operador |
Finalidade |
---|---|
< |
Determine se o primeiro valor é menor que o segundo valor. |
<= |
Determine se o primeiro valor é menor ou igual ao segundo valor. |
> |
Determine se o primeiro valor é maior que o segundo valor. |
>= |
Determine se o primeiro valor é maior ou igual ao valor do segundo. |
= |
Determine se o primeiro valor é igual ao segundo valor. |
<> |
Determine se o primeiro valor não é igual ao segundo valor. |
Em todos os casos, se o primeiro ou o segundo valor for Null, o resultado também será Null. Como Null representa um valor desconhecido, o resultado de qualquer comparação com Null também será desconhecido.
Lógico
Você usa os operadores lógicos para combinar dois valores e retornar um resultado verdadeiro, falso ou nulo. Você também pode ver os operadores lógicos mencionados como operadores Boolianos.
Operador |
Uso |
Descrição |
---|---|---|
And |
Expr1 And Expr2 |
Verdadeiro quando Expr1 e Expr2 são verdadeiras. |
Or |
Expr1 Or Expr2 |
Verdadeiro quando Expr1 ou Expr2 é verdadeira. |
Eqv |
Expr1 Eqv Expr2 |
Verdadeiro quando Expr1 e Expr2 são verdadeiras ou Expr1 e Expr2 são falsas. |
Not |
Not Expr |
Verdadeiro quando Expr não é verdadeira. |
Xor |
Expr1 Xor Expr2 |
Verdadeiro quando Expr1 é verdadeira ou Expr2 é verdadeira, mas não ambos. |
Concatenação
Você usa os operadores de concatenação para combinar dois valores de texto em uma cadeia de caracteres.
Operador |
Uso |
Descrição |
---|---|---|
& |
string1 & string2 |
Combina duas cadeias de caracteres para formar uma cadeia de caracteres. |
+ |
string1 + string2 |
Combina duas cadeias de caracteres para formar uma cadeia de caracteres e propagada valores nulos. |
Especial
Você usa os operadores especiais conforme descrito na tabela a seguir.
Operador |
Descrição |
Para saber mais |
---|---|---|
Is Null or Is Not Null |
Determina se um valor é Nulo ou Não Nulo. |
|
Like "pattern" |
Faz a correspondência com valores de cadeia de caracteres usando os operadores curinga ? e *. |
|
Between val1 And val2 |
Determina se um valor numérico ou de data está em um intervalo. |
|
In(string1,string2...) |
Determina se um valor de cadeia de caracteres está contido em um conjunto de valores de cadeia de caracteres. |
Constantes
Uma constante é um valor conhecido que não é alterado e você pode usar em uma expressão. Há quatro constantes comumente usadas no Access:
-
True indica algo que é logicamente verdadeiro.
-
False indica algo que é logicamente falso.
-
Null indica a falta de um valor conhecido.
-
"" (empty string) indica um valor que é conhecido como vazio.
As constantes podem ser usadas como argumentos para uma função e podem ser usadas em uma expressão como parte de um critério. Por exemplo, você pode usar a constante de cadeia de caracteres vazia ("") como parte de um critério de uma coluna em uma consulta para avaliar os valores dos campos dessa coluna, inserindo o seguinte como critério: <>"". Neste exemplo, <> é um operador e "" é uma constante. Usados juntos, indicam que o identificador ao qual são aplicados deve ser comparado a uma cadeia de caracteres vazia. A expressão resultante é verdadeira quando o valor do identificador é algo diferente de uma cadeia de caracteres vazia.
Tenha cuidado ao usar a constante Null. Na maioria dos casos, o uso de Null em conjunto com um operador de comparação resultará em um erro. Se você quiser comparar um valor a Null em uma expressão, use o operador Is Null ou Is Not Null.
Valores
Você pode usar valores literais nas suas expressões, como o número 1.254 ou a cadeia de caracteres "Insira um número entre 1 e 10". Também pode usar valores numéricos, que podem ser uma série de dígitos, incluindo um sinal e uma vírgula decimal, se necessário. Na ausência de um sinal, o Access pressupõe um valor positivo. Para tornar um valor negativo, inclua o sinal de subtração (-). Você também pode usar notação científica. Para fazer isso, inclua "E" ou "e" e o sinal do expoente (por exemplo, 1.0E-6).
Ao usar cadeias de texto, coloque-as entre aspas para ajudar a garantir que o Access as interprete corretamente. Em algumas circunstâncias, o Access fornece as aspas para você. Por exemplo, ao digitar texto em uma expressão para uma regra de validação ou para critérios de consulta, o Access delimita automaticamente as cadeias de texto com aspas.
Por exemplo, se você digitar o texto Paris, o Access exibirá "Paris" na expressão. Se quiser que uma expressão produza uma cadeia de caracteres incluída de fato entre aspas, delimite a cadeia de caracteres aninhada entre aspas simples (') ou três conjuntos de aspas duplas ("). Por exemplo, as expressões a seguir são equivalentes:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Para usar valores de data/hora, delimite os valores entre sinais de jogo da velha (#). Por exemplo, #7-3-17#, #7-Mar-17# e #Mar-7-2017# são valores válidos de data/hora. Quando o Access encontrar um valor válido de data/hora delimitado pelos caracteres #, ele tratará automaticamente esse valor como um tipo de dados Data/Hora.
O limite de aninhamento para expressões em um banco de dados da Web é 65.
Expressões aninhadas em mais de 65 níveis de profundidade não funcionarão no navegador, portanto, você não deve usar tais expressões em um banco de dados da web do Access. Você não receberá nenhuma mensagem de erro – a expressão simplesmente não funcionará.
O uso dos operadores &, AND e OR pode criar níveis de aninhamento adicionais no servidor que não serão refletidos no cliente do Access. Por exemplo, a expressão "a" & "b" & "c" não está aninhada no Construtor de Expressões, mas no SharePoint ela se torna concatenate.Db("a", concatenate.Db("b", "c") ). Esta tradução cria um nível de aninhamento. Usar muitos operadores &, AND ou OR consecutivos em uma única expressão pode fazer com que você exceda o limite de 65 de aninhamento do servidor, momento em que a expressão não funcionará no navegador.