Quando utiliza o Microsoft Access, geralmente tem de trabalhar com valores que não se encontram diretamente nos seus dados. Por exemplo, poderá querer calcular o imposto sobre vendas de uma encomenda ou calcular o valor total da encomenda propriamente dita. Pode calcular estes valores através da utilização de expressões. Para utilizar expressões, tem de escrevê-las com a sintaxe correta. A sintaxe é o conjunto de regras através das quais as palavras e os símbolos numa expressão são corretamente combinados. Inicialmente, as expressões no Access são um pouco complicadas de ler. No entanto, com uma boa compreensão da sintaxe da expressão e um pouco de prática, torna-se muito mais fácil.
Neste artigo
Descrição geral de expressões
Uma expressão é uma combinação de alguns ou de todos os seguintes elementos: funções, identificadores, operadores, valores e constantes incorporados ou definidos pelo utilizador que devolvem um único valor.
Por exemplo, a seguinte expressão contém elementos comuns:
=Sum([Purchase Price])*0.08
-
Sum() é uma função incorporada
-
[Purchase Price] é um identificador
-
* é um operador matemático
-
0.08 é uma constante
Esta expressão pode ser utilizada numa caixa de texto no rodapé de um formulário ou no rodapé de um relatório para calcular o imposto sobre vendas de um grupo de itens.
As expressões podem ser mais complexas ou mais simples do que este exemplo. Por exemplo, esta expressão do tipo booleano consiste em apenas um operador e uma constante:
>0
Esta expressão devolve:
-
True quando é comparado a um número que é maior do que 0.
-
False quando é comparado a um número que é menor do que 0.
Pode utilizar esta expressão na propriedade RegraDeValidação de um controlo ou campo de uma tabela para se certificar de que só são introduzidos valores positivos. As expressões são utilizadas em vários locais para efetuar cálculos, manipular carateres ou testar dados. As tabelas, consultas, formulários, relatórios e macros têm todos propriedades que aceitam uma expressão. Por exemplo, pode utilizar expressões nas propriedades Origem do Controlo e Valor Predefinido de um controlo. Também pode utilizar as expressões na propriedade RegraDeValidação para um campo de uma tabela.
Componentes de expressões
Para criar uma expressão, irá combinar identificadores ao utilizar funções, operadores, constantes e valores. Uma expressão válida tem de conter pelo menos uma função ou um identificador e pode ter constantes ou operadores. Também pode utilizar uma expressão como parte de outra expressão, geralmente como um argumento ou uma função. Isto é designado por aninhar uma expressão.
-
Identificadores A forma geral é:
[Collection name]![Object name].[Property name]
Só tem de especificar partes suficientes de um identificador para torná-lo exclusivo no contexto da sua expressão. É normal um identificador assumir a forma [Object name].
-
Funções A forma geral é:
Function(argument, argument)
Geralmente, um dos argumentos é um identificador ou uma expressão. Algumas funções não necessitam de argumentos. Antes de utilizar uma determinada função, analise a sintaxe dessa função. Para obter mais informações, consulte Funções (dispostas por categoria).
-
Operadores A forma geral é:
Identifier operator identifier
Existem exceções a esta forma, tal como detalhado na secção Operadores.
-
Constantes A forma geral é:
Identifier comparison_operator constant
-
Valores Os Valores ocorrem em vários pontos de uma expressão.
Objetos, coleções e propriedades
Todos os campos, tabelas, consultas, formulários e relatórios de uma base de dados do Access são individualmente conhecidos como objetos. Cada objeto tem um nome. Alguns objetos já têm um nome definido, como a tabela Contactos numa base de dados criada a partir do modelo Contactos do Microsoft Office Access. Quando criar um novo objeto, atribua-lhe um nome.
O conjunto de todos os membros de um tipo de objeto específico é designado coleção. Por exemplo, o conjunto de todas as tabelas numa base de dados é uma coleção. Alguns objetos, membros de uma coleção na sua base de dados, também podem ser coleções 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 forma de alterar as caraterísticas de um objeto. Por exemplo, um objeto de consulta contém uma propriedade Vista Predefinida que descreve e lhe permite especificar o modo como a consulta será apresentada ao ser executada.
O diagrama seguinte ilustra a relação entre coleções, objetos e propriedades:
|
3 Uma propriedade 2 Um objeto 1 Uma coleção |
Identificadores
Quando utiliza um objeto, coleção ou propriedade numa expressão, pode fazer referência a esse elemento ao utilizar um identificador. Um identificador inclui o nome do elemento que está a identificar e também o nome do elemento ao qual este pertence. Por exemplo, o identificador de um campo inclui o nome do campo e o nome da tabela ao qual o campo pertence. Um exemplo deste tipo de identificador é:
[Customers]![BirthDate]
Em alguns casos, o nome de um elemento funciona sozinho como um identificador. Isto acontece quando o nome do elemento é exclusivo no contexto da expressão que está a criar. Os restantes elementos do identificador estão implícitos no contexto. Por exemplo, se estiver a estruturar uma consulta que utilize apenas uma tabela, os próprios nomes dos campos funcionam como identificadores, uma vez que os nomes têm de ser exclusivos nessa tabela. Como está a utilizar apenas uma tabela, o nome da tabela está implícito em qualquer identificador que utilizar para fazer referência a um campo na consulta.
Noutros casos, tem de especificar as partes de um identificador para uma referência funcionar. Isto acontece quando um identificador não é exclusivo no contexto da expressão. Quando existe ambiguidade, tem de indicar explicitamente partes suficientes de um identificador para torná-lo exclusivo no contexto. Por exemplo, suponha que esteja projetando uma consulta que usa uma tabela chamada Produtos e uma tabela chamada Pedidos, e ambas as tabelas têm um campo chamado ProductID. Nesse caso, o identificador que você usa na consulta para se referir a qualquer um dos campos ProductID deve incluir o nome da tabela, além do nome do campo. Por exemplo:
[Products]![ProductID]
Operadores identificadores Existem três operadores que pode utilizar num identificador:
-
O operador ! (negação)
-
O operador .)
-
O operador [ ] (parênteses retos)
Utilize estes operadores ao colocar cada parte de um identificador entre parênteses retos e, em seguida, junte-as utilizando um operador de negação ou de ponto. Por exemplo, um identificador de um campo com o nome Apelido numa tabela designada Funcionários pode ser expresso como [Employees]![Last Name]. O operador de negação indica ao Access que o que se segue é um objeto que pertence à coleção que precede o operador de negação. Neste caso, [Apelido] é um objeto de campo que pertence à coleção [Funcionários], que também é um objeto de tabela.
Na realidade, não precisa de introduzir sempre os parênteses retos em torno de um identificador ou identificador parcial. Se não existirem espaços ou outros carateres especiais num identificador, o Access adiciona automaticamente os parênteses retos quando lê a expressão. No entanto, é aconselhável introduzir os parênteses por si mesmo. Dessa forma, evita erros e também funciona como um diferenciador que indica que uma determinada parte de uma expressão é um identificador.
Funções, operadores, constantes e valores
Para criar uma expressão, precisa de mais do que identificadores – precisa de efetuar algum tipo de ação. As funções, operadores e constantes servem para executar ações numa expressão.
Funções
Uma função é um procedimento que pode utilizar numa expressão. Algumas funções, como Data, não necessitam de uma entrada para funcionar. Porém, a maioria das funções exige entradas, designadas argumentos.
No exemplo que se encontra no início deste artigo, a função PartData utiliza dois argumentos: um argumento de intervalo, com o valor "yyyy" e um argumento de data, com o valor [Customers]![BirthDate]. A função PartData exige a utilização de pelo menos dois argumentos (intervalo e data), mas aceita até quatro argumentos.
A lista seguinte apresenta algumas funções frequentemente utilizadas em expressões. Clique na ligação correspondente a cada função para obter mais informações sobre a sintaxe que deve utilizar com essa função.
-
A função Data é utilizada para inserir a data atual do sistema numa expressão. É frequentemente utilizada com a função Formatar e também é utilizada com os identificadores dos campos que contêm dados de data/hora.
=Date()
-
A função PartData é utilizada para determinar ou extrair parte de uma data – normalmente uma data que é obtida a partir de um identificador de campo, mas por vezes pode ser um valor de data que é devolvido por outra função, como a função Data.
DatePart ( "yyyy", Date())
-
A função DifData é utilizada para determinar a diferença entre duas datas – normalmente entre uma data que é obtida a partir de um identificador de campo e uma data que é obtida através da função Date.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
A função Formatar é utilizada para aplicar uma formatação a um identificador e os resultados de outra função.
Format([Date],"ww")=Format(Now(),"ww")-1
-
A função ISe é utilizada para avaliar uma expressão como verdadeira ou falsa e, em seguida, devolver um valor se a expressão for avaliada como verdadeira e outro valor se a expressão for avaliada como falsa.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
A função EmCad é utilizada para procurar a posição de um caráter ou cadeia dentro de outra cadeia. A cadeia que é procurada normalmente é obtida a partir de um identificador de campo.
InStr(1,[IPAddress],".")
-
As funções Esquerda, Meio e Direita são utilizadas para extrair carateres de uma cadeia, a começar pelo caráter mais à esquerda (Esquerda), por uma posição específica no meio (Meio) ou pelo caráter mais à direita (Direita). Estas funções são frequentemente utilizadas com a função EmCad. A cadeia a partir da qual estas funções extraem os carateres, normalmente, é obtida a partir de um identificador de campo.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Para obter uma lista de funções, consulte Funções (dispostas 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 restantes elementos de uma expressão. Os operadores podem ser:
-
Aritméticos, como o sinal de adição (+).
-
Comparação, como o sinal de igual (=).
-
Lógicos, como Not.
-
Concatenados, como &.
-
Especiais, como Like.
Geralmente, os operadores são utilizados para indicar uma relação entre dois identificadores. As tabelas seguintes descrevem os operadores que pode utilizar em expressões do Access.
Aritméticos
Utilize os operadores aritméticos para calcular um valor de dois ou mais números ou para alterar o sinal de um número de positivo para negativo.
Operador |
Objetivo |
Exemplo |
---|---|---|
+ |
Somar dois números. |
[Subtotal]+[TaxaDeVendas] |
- |
Encontrar a diferença entre dois números ou indicar o valor negativo de um número. |
[Preço]-[Desconto] |
* |
Multiplicar dois números. |
[Quantidade]*[Preço] |
/ |
Dividir o primeiro número pelo segundo número. |
[Total]/[ItemCount] |
\ |
Arredondar ambos os números para números inteiros, dividir o primeiro número pelo segundo número e truncar o resultado para um número inteiro. |
[Inscrições]\[Salas] |
Mod |
Dividir o primeiro número pelo segundo número e devolver apenas o restante. |
[Inscrições] Resto [Salas] |
^ |
Elevar um número até à potência de um expoente. |
Número ^ Expoente |
Comparação
Utilize os operadores de comparação para comparar valores e devolver um resultado que seja verdadeiro, falso ou nulo (um valor desconhecido).
Operador |
Objetivo |
---|---|
< |
Determinar se o primeiro valor é menor que o segundo valor. |
<= |
Determinar se o primeiro valor é menor ou igual que o segundo valor. |
> |
Determinar se o primeiro valor é maior que o segundo valor. |
>= |
Determinar se o primeiro valor é maior ou igual que o segundo valor. |
= |
Determinar se o primeiro valor é igual ao segundo valor. |
<> |
Determinar se o primeiro valor não é igual ao segundo valor. |
Em todos os casos, se o primeiro ou segundo valor for Null, o resultado também será Null. Como o resultado Null representa um valor desconhecido, o resultado de qualquer comparação com um valor Null também será desconhecido.
Lógicos
Utilize os operadores lógicos para combinar dois valores e devolver um resultado verdadeiro, falso ou nulo. Os operadores lógicos também são designados operadores Booleanos.
Operador |
Utilização |
Descrição |
---|---|---|
And |
Expr1 E Expr2 |
Verdadeiro quando Expr1 e Expr2 são verdadeiros. |
Or |
Expr1 Ou Expr2 |
Verdadeiro quando Expr1 ou Expr2 é verdadeiro. |
Eqv |
Expr1 Eqv Expr2 |
Verdadeiro quando Expr1 e Expr2 são verdadeiros ou quando Expr1 e Expr2 são falsos. |
Not |
Não Expr |
Verdadeiro quando Expr não é verdadeiro. |
Xor |
Expr1 Xou Expr2 |
Verdadeiro quando Expr1 é verdadeiro ou Expr2 é verdadeiro, mas não ambos. |
Concatenados
Utilize os operadores de concatenação para combinar dois valores de texto numa só cadeia.
Operador |
Utilização |
Descrição |
---|---|---|
& |
cadeia1 & cadeia2 |
Combina duas cadeias para formar uma cadeia. |
+ |
cadeia1 + cadeia2 |
Combina duas cadeias para formar uma cadeia e propaga valores nulos. |
Especiais
Utilize os operadores especiais conforme descrito na tabela seguinte.
Operador |
Descrição |
Para Obter Mais Informações |
---|---|---|
Is Null or Is Not Null |
Determina se um valor é Nulo ou se Não É Nulo. |
|
Like "pattern" |
Corresponde os valores de cadeia ao utilizar os operadores de caráter universal ? e *. |
|
Between val1 And val2 |
Determina se um valor numérico ou de data se encontra num intervalo. |
|
In(string1,string2...) |
Determina se um valor de cadeia se encontra dentro de um conjunto de valores de cadeia. |
Constantes
Uma constante é um valor conhecido que não sofre alterações e que pode ser utilizado numa expressão. Existem quatro constantes mais frequentemente utilizadas no Access:
-
True Indica algo que é logicamente verdadeiro.
-
False Indica algo que é logicamente falso.
-
Null Indica a ausência de um valor conhecido.
-
"" (empty string) Indica um valor que se sabe estar vazio.
As constantes podem ser utilizadas como argumentos para uma função e podem ser utilizadas numa expressão como parte de um critério. Por exemplo, pode utilizar a constante de cadeia vazia ("") como parte de um critério de uma coluna numa consulta para avaliar os valores de campo dessa coluna, ao introduzir o seguinte como critério: <>"". Neste exemplo, <> é um operador e "" é uma constante. Quando utilizados em conjunto, indicam que o identificador ao qual se aplicam deve ser comparado com uma cadeia vazia. A expressão resultante é verdadeira se o valor do identificador não for uma cadeia vazia.
Tenha cuidado ao utilizar a constante Null. Na maioria dos casos, a utilização da constante Null em conjunto com um operador de comparação irá originar um erro. Se quiser comparar um valor com Null numa expressão, utilize o operador Is Null ou Is Not Null.
Valores
Pode utilizar valores literais nas expressões, tal como o número 1.254 ou a cadeia "Tem de introduzir um número entre 1 e 10". Também pode utilizar valores numéricos que podem ser uma série de dígitos, incluindo um sinal e uma vírgula decimal, caso necessário. Na ausência de um sinal, o Access assume um valor positivo. Para tornar um valor negativo, inclua o sinal de subtração (-). Também pode utilizar notação científica. Para tal, inclua "E" ou "e" e o sinal do expoente (por exemplo, 1,0E-6).
Quando utilizar cadeias de texto, coloque-as entre aspas para ajudar a garantir que o Access as interpreta corretamente. Em algumas circunstâncias, o Access fornece as aspas automaticamente. Por exemplo, quando escreve texto numa expressão para uma regra de validação ou para critérios de consulta, o Access coloca automaticamente as cadeias de texto entre aspas.
Por exemplo, se escrever o texto Paris, o Access irá apresentar "Faro" na expressão. Se quiser que uma expressão produza uma cadeia que esteja na realidade entre aspas, inclua a cadeia aninhada entre plicas (') ou entre três conjuntos de aspas ("). Por exemplo, as seguintes expressões são equivalentes:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Para utilizar valores de data/hora, coloque-os entre sinais de cardinal (#). Por exemplo, #7-3-17#, #7-mar-17# e #7-mar-2017# são todos valores de data/hora válidos. Quando o Access encontra um valor de data/hora válido entre carateres #, trata automaticamente o valor como um tipo de dados Data/Hora.
O limite de aninhamento para expressões numa base de dados Web é de 65
As expressões com mais de 65 níveis de aninhamento não irão funcionar no browser, por isso, não deverá utilizar estas expressões numa base de dados Web do Access. Não receberá nenhuma mensagem de erro, a expressão simplesmente não irá funcionar.
O uso dos operadores &, AND e OR podem criar níveis de aninhamento adicionais no servidor, que não se refletem no cliente do Access. Por exemplo, a expressão "a" & "b" & "c" não está aninhada no Construtor de Expressões, mas no SharePoint transforma-se em concatenate.Db("a", concatenate.Db("b", "c") ). Esta tradução cria um nível de aninhamento. Se utilizar muitos operadores &, AND ou OR consecutivos numa única expressão, pode ultrapassar o limite de aninhamento de 65 níveis, fazendo com que a expressão não funcione no browser.