Este artigo fornece muitos exemplos de expressões no Access. Uma expressão é uma combinação de operadores matemáticos ou lógicos, constantes, funções, campos de tabela, controlos e propriedades que são avaliados como um único valor. Pode utilizar expressões no Access para calcular valores, validar dados e definir um valor predefinido.
Neste artigo
Formulários e relatórios
As tabelas que se encontram nesta secção fornecem exemplos de expressões que calculam um valor num controlo localizado num formulário ou relatório. Para criar um controlo calculado, tem de introduzir uma expressão na propriedade do controlo OrigemDoControlo em vez de num campo de tabela ou numa consulta.
Nota Também pode utilizar expressões num formulário ou relatório quando Realçar dados com formatação condicional.
Operações de texto
As expressões apresentadas na seguinte tabela utilizam os operadores & ("E" comercial) e + (sinal de adição) para combinar cadeias de texto, utilizar funções incorporadas para manipular uma cadeia de texto ou operar no texto para criar um controlo calculado.
Expressão |
Resultado |
---|---|
="N/A" |
Apresenta N/D. |
=[FirstName] & " " & [LastName] |
Apresenta os valores que se encontram nos campos de tabela denominados NomePróprio e Apelido. Neste exemplo, o operador & é utilizado para combinar o campo NomePróprio com um caráter de espaço (colocado entre aspas) e o campo Apelido. |
=Left([ProductName], 1) |
Utiliza a função Esquerda para apresentar o primeiro caráter do valor de um campo ou controlo denominado NomeDoProduto. |
=Right([AssetCode], 2) |
Utiliza a função Direita para apresentar os 2 últimos carateres do valor num campo ou controlo denominado CódigoDoAtivo. |
=Trim([Address]) |
Utiliza a função Compactar para apresentar o valor do controlo Endereço e remover os espaços à esquerda ou à direita. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Utiliza a função ISe para apresentar os valores dos controlos Localidade e CódigoPostal se o valor no controlo Região for nulo. Caso contrário, apresenta os valores dos controlos Localidade, Região e CódigoPostal separados por espaços. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
Utiliza o operador + e a propagação de um valor nulo para apresentar os valores dos controlos Localidade e CódigoPostal se o valor no campo ou controlo Região for nulo. Caso contrário, apresenta os valores dos campos ou controlos Localidade, Região e CódigoPostal separados por espaços. A propagação de valores nulos significa que, se um componente de uma expressão for nulo, toda a expressão é igualmente nula. O operador + suporta a propagação de valores nulos, ao passo que o operador & não a suporta. |
Cabeçalhos e rodapés
As propriedades Página e Páginas utilizam-se para apresentar ou imprimir números de página em formulários ou relatórios. As propriedades Página e Páginas apenas estão disponíveis durante a impressão ou a pré-visualização, pelo que não são apresentadas na folha de propriedades do formulário ou relatório. Normalmente, estas propriedades utilizam-se colocando uma caixa de texto na secção de cabeçalho ou rodapé do formulário ou relatório e, em seguida, utilizando uma expressão, tal como as que são apresentadas na seguinte tabela.
Para obter mais informações sobre como utilizar cabeçalhos e rodapés em formulários e relatórios, consulte o artigo Inserir números de página num formulário ou relatório.
Expressão |
Resultado |
---|---|
=[Page] |
1 |
="Page " & [Page] |
Página 1 |
="Page " & [Page] & " of " & [Pages] |
Página 1 de 3 |
=[Page] & " of " & [Pages] & " Pages" |
1 de 3 Páginas |
=[Page] & "/" & [Pages] & " Pages" |
1/3 Páginas |
=[Country/region] & " - " & [Page] |
Reino Unido – 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Impresso em: 31/12/2017 |
Operações aritméticas
Pode utilizar expressões para somar, subtrair, multiplicar e dividir os valores em dois ou mais campos ou controlos. Também pode utilizar expressões para efetuar operações aritméticas em datas. Por exemplo, imagine que tem um campo de tabela Data/Hora denominado DataObrigatória. No campo ou num controlo vinculado ao campo, a expressão =[RequiredDate] - 2 devolve um valor de data/hora igual a dois dias antes dos valores atuais do campo DataObrigatória.
Expressão |
Resultado |
---|---|
=[Subtotal]+[Freight] |
A soma dos valores dos campos ou controlos Subtotal e Transporte. |
=[RequiredDate]-[ShippedDate] |
O intervalo entre os valores de data dos campos ou controlos DataObrigatória e da DataDeEnvio. |
=[Price]*1.06 |
O produto do valor do campo ou controlo Preço por 1,06 (adiciona 6% ao valor de Preço). |
=[Quantity]*[Price] |
O produto dos valores do campo ou controlo Quantidade pelo valor do campo ou controlo Preço. |
=[EmployeeTotal]/[CountryRegionTotal] |
O quociente dos valores do campo ou controlo TotalDeColaboradores e do campo ou controlo TotalPaísRegião. |
Nota Quando utiliza um operador aritmético (+, -, * e /) numa expressão e o valor de um dos controlos na expressão é nulo, o resultado de toda a expressão será nulo. Isto é conhecido como propagação de valores nulos. Se existir a probabilidade de algum registo num dos controlos utilizados na expressão ter um valor nulo, poderá evitar a propagação de valores nulos convertendo o valor nulo em zero através da função Nz, por exemplo, =Nz([Subtotal])+Nz([Freight]).
Valores noutros controlos
Por vezes, necessita de um valor que se encontra noutro local, tal como num campo ou controlo noutro formulário ou relatório. Pode utilizar uma expressão para devolver o valor de outro campo ou controlo.
A tabela seguinte apresenta exemplos de expressões que pode utilizar em controlos calculados de formulários.
Expressão |
Resultado |
---|---|
=Forms![Orders]![OrderID] |
O valor do controlo IDDaEncomenda no formulário Encomendas. |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
O valor do controlo SubtotalDaEncomenda no subformulário denominado Subformulário de Encomendas no formulário Encomendas. |
=Forms![Orders]![Orders Subform]![ProductID].Column(2) |
O valor da terceira coluna em IDDoProduto, uma caixa de listagem com várias colunas no subformulário denominado Subformulário de Encomendas no formulário Encomendas. (Tenha em atenção que 0 refere-se à primeira coluna, 1 refere-se à segunda coluna e assim sucessivamente.) |
=Forms![Orders]![Orders Subform]![Price] * 1.06 |
O produto do valor do controlo Preço no subformulário denominado Subformulário de Encomendas no formulário Encomendas por 1,06 (adiciona 6% ao valor do controlo Preço). |
=Parent![OrderID] |
O valor do controlo IDDaEncomenda no formulário principal do subformulário atual. |
As expressões apresentadas na seguinte tabela mostram algumas formas de utilizar controlos calculados em relatórios. As expressões fazem referência às Propriedades de Relatório.
Expressão |
Resultado |
---|---|
=Report![Invoice]![OrderID] |
O valor de um controlo denominado "IDDaEncomenda" num relatório denominado "Fatura". |
=Report![Summary]![Summary Subreport]![SalesTotal] |
O valor do controlo TotalDeVendas no subrelatório denominado Resumo do relatório Resumo. |
=Parent![OrderID] |
O valor do controlo IDDaEncomenda no relatório principal do sub-relatório atual. |
Contar, somar e calcular a média de valores
Pode utilizar um tipo de função denominada função de agregação para calcular valores para um ou mais campos ou controlos. Por exemplo, pode calcular um total de grupo para o rodapé do grupo num relatório ou um subtotal de encomenda para itens num formulário. Também pode contar o número de itens em um ou mais campos ou calcular um valor médio.
As expressões apresentadas na seguinte tabela mostram algumas formas de utilizar funções como Média, Contar e Soma.
Expressão |
Descrição |
---|---|
=Avg([Freight]) |
Utiliza a função Média para apresentar a média dos valores de um campo de tabela ou controlo denominado "Transporte". |
=Count([OrderID]) |
Utiliza a função Contar para apresentar o número de registos no controlo IDDaEncomenda. |
=Sum([Sales]) |
Utiliza a função Soma para apresentar a soma dos valores do controlo Vendas. |
=Sum([Quantity]*[Price]) |
Utiliza a função Soma para apresentar a soma do produto dos valores de Quantidade pelos controlos Preço. |
=[Sales]/Sum([Sales])*100 |
Apresenta a percentagem das vendas, determinada pela divisão do valor do controlo Vendas pela soma de todos os valores do controlo Vendas. Se definir a propriedade Formato do controlo para Percentagem, não inclua *100 na expressão. |
Para obter mais informações sobre a utilização de funções de agregação e o somatório de valores em campos e colunas, consulte os artigos Somar dados utilizando uma consulta, Contar dados utilizando uma consulta, Apresentar totais de colunas numa folha de dados ao utilizar uma linha de Totais e Apresentar totais de colunas numa folha de dados.
Funções de agregação SQL
Quando é necessário somar ou contar valores seletivamente, utiliza-se uma função denominada função agregada de domínio ou SQL. Um "domínio" consiste em um ou mais campos numa ou mais tabelas, ou em um ou mais controlos num ou mais formulários ou relatórios. Por exemplo, pode fazer com que os valores num campo de tabela correspondam aos valores num controlo de um formulário.
Expressão |
Descrição |
---|---|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
Utiliza a função DPesquisar para devolver o valor do campo NomeDoContacto na tabela Fornecedores, onde o valor do campo IDDoFornecedor na tabela corresponde ao valor do controlo IDDoFornecedor no formulário Fornecedores. |
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
Utiliza a função DPesquisar para devolver o valor do campo NomeDoContacto na tabela Fornecedores, onde o valor do campo IDDoFornecedor na tabela corresponde ao valor do controlo IDDoFornecedor no formulário Novos Fornecedores. |
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
Utiliza a função DSoma para devolver o total da soma dos valores no campo ValorDaEncomenda da tabela Encomendas, onde IDDoCliente é RATTC. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
Utiliza a função DContar para devolver o número de valores Sim no campo Descontinuado (um campo Sim/Não) na tabela Ativos. |
Operações de data
A monitorização de datas e horas é uma atividade de base de dados fundamental. Por exemplo, pode calcular quantos dias passaram desde a data da fatura para listar os seus pagamentos a receber por data. Pode formatar datas e horas de várias maneiras, conforme apresentado na seguinte tabela.
Expressão |
Descrição |
---|---|
=Date() |
Utiliza a função Data para apresentar a data atual no formato mm-dd-yy, onde mm é o mês (de 1 a 12), dd é o dia (de 1 a 31) e yy corresponde aos dois últimos dígitos do ano (de 1980 a 2099). |
=Format(Now(), "ww") |
Utiliza a função Formato para apresentar o número da semana do ano para a data atual, onde ww representa as semanas 1 a 53. |
=DatePart("yyyy", [OrderDate]) |
Utiliza a função DatePart para apresentar o ano de quatro dígitos do valor do controlo DataDeEncomenda. |
=DateAdd("y", -10, [PromisedDate]) |
Utiliza a função SomData para apresentar uma data que corresponde a 10 dias antes do valor do controlo DataDeCompromisso. |
=DateDiff("d", [OrderDate], [ShippedDate]) |
Utiliza a função DifData para apresentar o número de diferença de dias entre os valores dos controlos DataDeEncomenda e DataDeEnvio. |
=[InvoiceDate] + 30 |
Utiliza operações aritméticas nas datas para calcular a data 30 dias posterior à data do campo ou controlo DataDaFatura. |
Condições de apenas dois valores
Os exemplos de expressões apresentados na seguinte tabela utilizam a função ISe para devolver um de dois valores possíveis. Transmitem-se três argumentos à função ISe: O primeiro argumento é uma expressão que tem de devolver um valor True ou False. O segundo argumento é o valor a devolver se a expressão for verdadeira e o terceiro argumento é o valor a devolver se a expressão for falsa.
Expressão |
Descrição |
---|---|
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
Utiliza a função ISe (Se Imediato) para apresentar a mensagem "Encomenda Confirmada" se o valor do controlo Confirmada for Yes. Caso contrário, apresenta a mensagem "Order Not Confirmed." |
=IIf(IsNull([Country/region]), " ", [Country]) |
Utiliza as funções ISe e ÉNulo para apresentar uma cadeia vazia se o valor do controlo de País/região for nulo. Caso contrário, apresenta o valor do controlo País/região. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Utiliza as funções ISe e ÉNulo para apresentar os valores dos controlos Localidade e CódigoPostal se o valor no controlo Região for nulo. Caso contrário, apresenta os valores dos campos ou controlos Localidade, Região e CódigoPostal. |
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Utiliza as funções ISe e ÉNulo para apresentar a mensagem "Verificar se existe uma data em falta" se o resultado da subtração da DataDeEnvio pela DataObrigatória for nulo. Caso contrário, apresenta o intervalo entre os valores dos controlos DataObrigatória e DataDeEnvio. |
Consultas e filtros
Esta secção contém exemplos de expressões que pode utilizar para criar um campo calculado numa consulta ou para fornecer critérios a uma consulta. Um campo calculado é uma coluna de uma consulta que resulta de uma expressão. Por exemplo, pode calcular um valor, combinar valores de texto, tais como nomes e apelidos, ou formatar uma parte de uma data.
Utilizam-se critérios numa consulta para limitar os registos com os quais se trabalha. Por exemplo, pode utilizar o operador Between para fornecer uma data de início e de fim e limitar os resultados da sua consulta a encomendas enviadas entre essas datas.
Em seguida, apresentamos exemplos de expressões para serem utilizadas em consultas.
Operações de texto
As expressões apresentadas na seguinte tabela utilizam os operadores & e + para combinar cadeias de texto, utilizar funções incorporadas para operar numa cadeia de texto ou operar no texto para criar um campo calculado.
Expressão |
Descrição |
---|---|
FullName: [FirstName] & " " & [LastName] |
Cria um campo denominado NomeCompleto que apresenta os valores nos campos NomePróprio e Apelido separados por um espaço. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
Cria um campo denominado Endereço2 que apresenta os valores nos campos Localidade, Região e CódigoPostal separados por espaços. |
ProductInitial: Left([ProductName], 1) |
Cria um campo denominado InicialDoProduto e, em seguida, utiliza a função Esquerda para apresentar o primeiro caráter do valor no campo NomeDoProduto no campo InicialDoProduto. |
TypeCode: Right([AssetCode], 2) |
Cria um campo denominado CódigoDeTipo e, em seguida, utiliza a função Direita para apresentar os últimos dois carateres dos valores no campo CódigoDoAtivo. |
AreaCode: Mid([Phone],2,3) |
Cria um campo denominado Indicativo e, em seguida, utiliza a função Meio para apresentar três carateres, começando pelo segundo caráter do valor, no campo Telefone. |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 |
Atribui um nome ao campo calculado PreçoExpandido e utiliza a função CMoeda para calcular a linha do total de itens com desconto aplicado. |
Operações aritméticas
Pode utilizar expressões para somar, subtrair, multiplicar e dividir os valores em dois ou mais campos ou controlos. Também pode efetuar operações aritméticas em datas. Por exemplo, imagine que tem um campo Data/Hora denominado DataObrigatória. A expressão =[RequiredDate] - 2 devolve um valor de Data/Hora igual a dois dias antes do valor do campo DataObrigatória.
Expressão |
Descrição |
---|---|
PrimeFreight: [Freight] * 1.1 |
Cria um campo denominado TransportePrincipal e, em seguida, apresenta os encargos de transporte acrescidos de 10% no campo. |
OrderAmount: [Quantity] * [UnitPrice] |
Cria um campo denominado ValorDaEncomenda e, em seguida, apresenta o produto dos valores nos campos Quantidade e PreçoUnitário. |
LeadTime: [RequiredDate] - [ShippedDate] |
Cria um campo denominado TempoDeExecução e, em seguida, apresenta a diferença entre os valores nos campos DataObrigatória e DataDeEnvio. |
TotalStock: [UnitsInStock]+[UnitsOnOrder] |
Cria um campo denominado StockTotal e, em seguida, apresenta a soma dos valores nos campos UnidadesEmStock e UnidadesEncomendadas. |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Cria um campo denominado PercentagemDeTransporte e, em seguida, apresenta a percentagem dos encargos de transporte em cada subtotal. Esta expressão utiliza a função Soma para somar os valores no campo Transporte e, em seguida, divide esses totais pela soma dos valores no campo Subtotal. Para utilizar esta expressão, tem de converter a consulta Seleção numa consulta de Totais, porque precisa de utilizar a linha Total na grelha de estrutura e tem de definir a célula Total deste campo para Expressão. Para obter mais informações sobre como criar uma consulta de Totais, consulte o artigo Somar dados utilizando uma consulta. Se definir a propriedade Formato do campo para Percentagem, não inclua *100. |
Para obter mais informações sobre a utilização de funções de agregação e o somatório de valores em campos e colunas, consulte os artigos Somar dados utilizando uma consulta, Contar dados utilizando uma consulta, Apresentar totais de colunas numa folha de dados ao utilizar uma linha de Totais e Apresentar totais de colunas numa folha de dados.
Operações de data
Quase todas as bases de dados armazenam e monitorizam datas e horas. Para trabalhar com datas e horas no Access, define-se os campos de data e hora nas tabelas para o tipo de dados Data/Hora. O Access pode efetuar cálculos aritméticos em datas, podendo, por exemplo, calcular quantos dias passaram desde a data da fatura para listar os seus pagamentos a receber por data.
Expressão |
Descrição |
---|---|
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) |
Cria um campo denominado TempoDeAtraso e, em seguida, utiliza a função DifData para apresentar o número de dias entre a data da encomenda e data de envio. |
YearHired: DatePart("yyyy",[HireDate]) |
Cria um campo denominado AnoDeContratação e, em seguida, utiliza a função PartData para apresentar o ano em que cada colaborador foi contratado. |
MinusThirty: Date( )- 30 |
Cria um campo denominado MenosTrinta e, em seguida, utiliza a função Data para apresentar a data 30 dias anterior à data atual. |
Funções de agregação SQL
As expressões apresentadas na seguinte tabela utilizam funções SQL (Structured Query Language – linguagem SQL) que agregam ou resumem dados. Estas funções (por exemplo, Soma, Contar e Média) são frequentemente denominadas funções de agregação.
Além das funções de agregação, o Access também fornece funções de agregação de "domínio" que pode utilizar para somar ou contar valores seletivamente. Por exemplo, pode contar apenas os valores dentro de um determinado intervalo ou procurar um valor de outra tabela. O conjunto de funções agregadas de domínio inclui a Função DSoma, a Função DContar e a Função DMédia.
Para calcular totais terá, muitas vezes, de criar uma consulta de Totais. Por exemplo, para resumir por grupo, tem de utilizar uma consulta de Totais. Para ativar uma consulta de Totais a partir da grelha de estrutura de consulta, clique em Totais no menu Vista.
Expressão |
Descrição |
---|---|
RowCount: Count(*) |
Cria um campo denominado ContagemDeLinhas e, em seguida, utiliza a função Contar para contar o número de registos na consulta, incluindo os registos com campos nulos (em branco). |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Cria um campo denominado PercentagemDeTransporte e, em seguida, calcula a percentagem dos encargos de transporte em cada subtotal através da divisão da soma dos valores no campo Transporte pela soma dos valores no campo Subtotal. (Este exemplo utiliza a função Soma.) Tem de utilizar esta expressão com uma consulta de Totais. Se definir a propriedade Formato do campo para Percentagem, não inclua *100. Para obter mais informações sobre como criar uma consulta de Totais, consulte o artigo Somar dados utilizando uma consulta. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
Cria um campo denominado TransporteMédio e, em seguida, utiliza a função DMédia para calcular o valor médio do transporte em todas as encomendas combinadas numa consulta de Totais. |
Campos com dados em falta
As expressões aqui apresentadas funcionam com campos que podem ter informações em falta, tal como os que contêm valores nulos (desconhecidos ou indefinidos). Muitas vezes surgem valores nulos, tais como um preço desconhecido para um novo produto ou um valor que um colega se esqueceu de adicionar a uma encomenda. A capacidade de localizar e processar valores nulos pode ser uma parte fundamental das operações das bases de dados. As expressões apresentadas na seguinte tabela mostram algumas formas comuns de lidar com estes valores.
Expressão |
Descrição |
---|---|
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) |
Cria um campo denominado PaísRegiãoAtual e, em seguida, utiliza as funções ISe e ÉNulo para apresentar uma cadeia vazia nesse campo quando o campo PaísRegião contém um valor nulo. Caso contrário, apresenta o conteúdo do campo PaísRegião. |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Cria um campo denominado TempoDeExecução e, em seguida, utiliza as funções ISe e ÉNulo para apresentar a mensagem "Procurar uma data em falta" se o valor no campo DataObrigatória ou DataDeEnvio for nulo. Caso contrário, apresenta a diferença entre estas datas. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
Cria um campo denominado VendasSemestrais e, em seguida, apresenta o total dos valores nos campos VendasDoTri1 e VendasDoTri2, utilizando primeiro a função Nz para converter os valores nulos em zero. |
Subconsultas e campos calculados
Pode utilizar uma consulta aninhada, também conhecida como subconsulta, para criar um campo calculado. A expressão apresentada na seguinte tabela é um exemplo de um campo calculado que resulta de uma subconsulta.
Expressão |
Descrição |
---|---|
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) |
Cria um campo denominado Cat e, em seguida, apresenta o NomeDaCategoria se o IDDaCategoria da tabela Categorias for igual ao IDDaCategoria da tabela Produtos. |
Corresponder valores de texto
Os exemplos de expressões apresentados nesta tabela demonstram critérios que efetuam correspondências entre valores de texto inteiros ou parciais.
Campo |
Expressão |
Descrição |
---|---|---|
CidadeDeEnvio |
"London" |
Apresenta encomendas enviadas para Coimbra. |
CidadeDeEnvio |
"London" Or "Hedge End" |
Utiliza o operador Or para apresentar as encomendas enviadas para Coimbra ou para o Porto. |
PaísRegiãoDeEnvio |
In("Canada", "UK") |
Utiliza o operador In para apresentar as encomendas enviadas para Portugal ou para o Reino Unido. |
PaísRegiãoDeEnvio |
Not "USA" |
Utiliza o operador Not para apresentar as encomendas enviadas para todos os países/as regiões, exceto para os EUA. |
NomeDoProduto |
Not Like "C*" |
Utiliza o operador Not e o caráter universal * para apresentar produtos cujos nomes não começam com "C". |
NomeDaEmpresa |
>="N" |
Apresenta as encomendas enviadas para empresas cujos nomes começam com letras de N a Z. |
CódigoDoProduto |
Right([ProductCode], 2)="99" |
Utiliza a função Direita para apresentar as encomendas com valores de CódigoDoProduto que terminem em 99. |
NomeDeEnvio |
Like "S*" |
Apresenta as encomendas enviadas para clientes cujos nomes começam com a letra S. |
Corresponder os dados aos critérios
As expressões apresentadas na seguinte tabela demonstram a utilização de datas e funções relacionadas em expressões de critérios. Para obter mais informações sobre como introduzir e utilizar valores de data, consulte o artigo Formatar um camp de data e hora.
Campo |
Expressão |
Descrição |
---|---|---|
DataDeEnvio |
#2/2/2017# |
Apresenta encomendas enviadas no dia 2 de fevereiro de 2017. |
DataDeEnvio |
Date() |
Apresenta encomendas enviadas hoje. |
DataDeEntrega |
Between Date( ) And DateAdd("m", 3, Date( )) |
Utiliza o operador Between...And e as funções SomData e Data para apresentar as encomendas entre a data atual e três meses a partir da data atual. |
DataDaEncomenda |
< Date( ) - 30 |
Utiliza a função Data para apresentar as encomendas com mais de 30 dias. |
DataDaEncomenda |
Year([OrderDate])=2017 |
Utiliza a função Ano para apresentar as encomendas com datas de encomenda pertencentes ao ano 2017. |
DataDaEncomenda |
DatePart("q", [OrderDate])=4 |
Utiliza a função DatePart para apresentar as encomendas do quarto trimestre civil. |
DataDaEncomenda |
DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 |
Utiliza as funções DataSerial, Ano e Mês para apresentar as encomendas do último dia de cada mês. |
DataDaEncomenda |
Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) |
Utiliza as funções Ano e Mês e o operador E para apresentar as encomendas do mês e ano atuais. |
DataDeEnvio |
Between #1/5/2017# And #1/10/2017# |
Utiliza o operador Between...And para apresentar as encomendas enviadas entre 5-jan-2017 e 10-jan-2017. |
DataDeEntrega |
Between Date( ) And DateAdd("M", 3, Date( )) |
Utiliza o operador Between...And para apresentar as encomendas necessárias entre a data atual e três meses a partir da data de hoje. |
DataDeNascimento |
Month([BirthDate])=Month(Date()) |
Utiliza as funções Mês e Data para apresentar os colaboradores cujo aniversário é neste mês. |
Localizar dados em falta
As expressões apresentadas na seguinte tabela funcionam com campos que podem ter informações em falta, ou seja, com campos que poderão conter um valor nulo ou uma cadeia de comprimento zero. Um valor nulo representa a ausência de informação; não representa um zero nem qualquer outro valor. O Access suporta esta ideia de informações em falta, dado que este conceito é vital para a integridade de uma base de dados. No mundo real, as informações estão muitas vezes em falta, mesmo que apenas temporariamente (por exemplo, o preço ainda por determinar de um produto novo). Assim, uma base de dados que serve como modelo de uma entidade do mundo real, tal como de uma empresa, tem de ser capaz de registar informações como estando em falta. Pode utilizar a função ÉNulo para determinar se um campo ou controlo contém um valor nulo e a função Nz para converter um valor nulo em zero.
Campo |
Expressão |
Descrição |
---|---|---|
RegiãoDeEnvio |
Is Null |
Apresenta as encomendas de clientes cujo campo RegiãoDeEnvio é nulo (está em falta). |
RegiãoDeEnvio |
Is Not Null |
Apresenta as encomendas de clientes cujo campo RegiãoDeEnvio contém um valor. |
Fax |
"" |
Apresenta as encomendas de clientes que não têm fax, sendo este facto indicado por um valor de cadeia de comprimento no campo Fax em vez de por um valor nulo (em falta). |
Corresponder padrões de registo com Como
O operador Like permite uma grande flexibilidade quando está a tentar efetuar correspondências entre linhas que seguem um padrão, dado que pode utilizar o operador Like com carateres universais e definir padrões para o Access efetuar a correspondência. Por exemplo, o caráter universal * (asterisco) efetua correspondências entre uma sequência de carateres de qualquer tipo, facilitando a localização de todos os nomes que começam com uma determinada letra. Por exemplo, utilize a expressão Like "S*" para encontrar todos os nomes que começam com a letra S. Para obter mais informações, consulte o artigo Operador Como.
Campo |
Expressão |
Descrição |
---|---|---|
NomeDeEnvio |
Like "S*" |
Localiza todos os registos no campo NomeDeEnvio que começam com a letra "S". |
NomeDeEnvio |
Like "*Imports" |
Localiza todos os registos no campo NomeDeEnvio que terminam com a palavra "Importações". |
NomeDeEnvio |
Like "[A-D]*" |
Localiza todos os registos no campo NomeDeEnvio que começam com as letras "A", "B", "C" ou "D". |
NomeDeEnvio |
Like "*ar*" |
Localiza todos os registos no campo NomeDeEnvio que incluem a sequência de letras "ar". |
NomeDeEnvio |
Como "Artur Cunh?" |
Localiza todos os registos no campo NomeDeEnvio que incluem "Artur" na primeira parte do valor e uma cadeia de cinco letras, na qual as primeiras quatro letras são "Cunh" e a última letra é desconhecida. |
NomeDeEnvio |
Not Like "A*" |
Localiza todos os registos no campo NomeDeEnvio que não começam com a letra "A". |
Corresponder linhas com agregação SQL
Quando é necessário somar, contar ou calcular a média de valores seletivamente, utiliza-se uma função agregada de domínio ou SQL. Por exemplo, pode pretender contar apenas os valores inseridos dentro de um determinado intervalo ou que são avaliados como Sim. Noutras ocasiões, poderá ter de procurar um valor de outra tabela para que o possa apresentar. Os exemplos de expressões apresentados na seguinte tabela utilizam as funções agregadas de domínio para efetuar um cálculo com base num conjunto de valores e utilizar o resultado como os critérios de consulta.
Campo |
Expressão |
Descrição |
---|---|---|
Transporte |
> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
Utiliza as funções DDesvP e DMédia para apresentar todas as encomendas cujo custo de transporte é superior ao valor da soma da média com o desvio-padrão do custo do transporte. |
Quantidade |
> DAvg("[Quantity]", "[Order Details]") |
Utiliza a função DMédia para apresentar produtos encomendados em quantidades superiores à quantidade de encomenda média. |
Corresponder campos com subconsultas
Para calcular um valor para utilizar como critério, utilizam-se subconsultas, também denominadas consultas aninhadas. Os exemplos de expressões apresentados na seguinte tabela efetuam correspondências entre linhas com base nos resultados devolvidos por uma subconsulta.
Campo |
Expressão |
Apresenta |
---|---|---|
PreçoUnitário |
(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
Produtos cujo preço é igual ao do Licor de Anis. |
PreçoUnitário |
>(SELECT AVG([UnitPrice]) FROM [Products]) |
Produtos que têm um preço unitário acima da média. |
Salário |
> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
Salário de cada representante de vendas cujo salário é superior ao de todos os colaboradores que ocupam cargos de "Gestor" ou "Vice-presidente". |
TotalDaEncomenda: [PreçoUnitário] * [Quantidade] |
> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) |
Encomendas com totais superiores ao valor de encomenda médio. |
Atualizar consultas
As consultas de atualização utilizam-se para modificar os dados em um ou mais campos existentes numa base de dados. Por exemplo, pode substituir valores ou eliminá-los totalmente. Esta tabela mostra algumas formas de utilizar expressões em consultas de atualização. Estas expressões utilizam-se na linha Atualizar Para na grelha de estrutura da consulta para o campo que pretende atualizar.
Para obter mais informações sobre a criação de consultas de atualização, consulte o artigo Criar e executar uma consulta de atualização.
Campo |
Expressão |
Resultado |
---|---|---|
Título |
"Salesperson" |
Altera um valor de texto para Vendedor. |
InícioDoProjeto |
#8/10/17# |
Altera um valor de data para 10-ago-17. |
Descontinuado |
Yes |
Altera um valor Não num campo Sim/Não para Sim. |
NúmeroDePeça |
"PN" & [PartNumber] |
Adiciona NP ao início de cada número de peça especificado. |
TotalDoItem |
[UnitPrice] * [Quantity] |
Calcula o produto do PreçoUnitário pela Quantidade. |
Transporte |
[Freight] * 1.5 |
Aumenta os encargos de transporte em 50%. |
Vendas |
DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
Atualiza os totais de vendas com base no produto da Quantidade pelo PreçoUnitário quando os valores IDDoProduto da tabela atual correspondem aos valores IDDoProduto da tabela Detalhes da Encomenda. |
CódigoPostalDeEnvio |
Right([ShipPostalCode], 5) |
Trunca os carateres mais à esquerda, deixando ficar os cinco carateres mais à direita. |
PreçoUnitário |
Nz([UnitPrice]) |
Altera um valor nulo (desconhecido ou indefinido) para zero (0) no campo PreçoUnitário. |
Instruções SQL
A linguagem SQL (Structured Query Language), é a linguagem de consulta utilizada pelo Access. Todas as consultas que criar na vista de Estrutura de consulta também podem ser expressas através de SQL. Para ver a instrução SQL de qualquer consulta, clique em Vista de SQL no menu Vista. A tabela seguinte mostra exemplos de instruções SQL que utilizam uma expressão.
Instrução SQL que utiliza uma expressão |
Resultado |
---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
Apresenta os valores nos campos NomePróprio e Apelido dos colaboradores cujo apelido é Sousa. |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
Apresenta os valores nos campos IDDoProduto e NomeDoProduto da tabela Produtos para registos em que o valor de IDDaCategoria corresponde ao valor de IDDaCategoria especificado num formulário aberto denominado Novos Produtos. |
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; |
Calcula o preço expandido médio para encomendas cujo valor no campo PreçoExpandido é superior a 1000 e apresenta-o num campo denominado Preço Expandido Médio. |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
Apresenta o número total de produtos para as categorias com mais de 10 produtos num campo denominado ContagemDoIDDoProduto. |
Expressões de tabelas
As duas formas mais comuns de utilizar expressões em tabelas é atribuir um valor predefinido e criar uma regra de validação.
Valores de campos predefinidos
Ao criar uma base de dados, poderá pretender atribuir um valor predefinido a um campo ou controlo. Neste caso, o Access fornece o valor predefinido quando se cria um novo registo que contém o campo ou quando se cria um objeto que contém o controlo. As expressões apresentadas na seguinte tabela representam exemplos de valores predefinidos para um campo ou controlo. Se um controlo estiver vinculado a um campo numa tabela e o campo tiver um valor predefinido, o valor predefinido do controlo terá prioridade.
Campo |
Expressão |
Valor de campo predefinido |
---|---|---|
Quantidade |
1 |
1 |
Região |
"MT" |
Braga |
Região |
"New York, N.Y." |
Lisboa (Tenha em atenção que tem de escrever o valor entre aspas se este incluir pontuação.) |
Fax |
"" |
Uma cadeia de comprimento zero para indicar que, por predefinição, este campo deve estar vazio em vez de que conter um valor nulo |
Data da Encomenda |
Date( ) |
A data de hoje |
DataDeConclusão |
Date() + 60 |
A data correspondente a 60 dias a partir de hoje |
Regras de validação de campo
Pode criar uma regra de validação para um campo ou controlo utilizando uma expressão. Neste caso, o Access impõe a regra quando são introduzidos dados no campo ou controlo. Para criar uma regra de validação, modifica-se a propriedade RegraDeValidação do campo ou controlo. Também deve considerar definir a propriedade TextoDeValidação, que contém o texto que o Access apresenta quando a regra de validação é violada. Se não definir a propriedade TextoDeValidação, o Access apresenta uma mensagem de erro predefinida.
Os exemplos apresentados na seguinte tabela demonstram as expressões de regra de validação para a propriedade RegraDeValidação e o texto associado para a propriedade TextoDeValidação.
Propriedade RegraDeValidação |
Propriedade TextoDeValidação |
---|---|
<> 0 |
Introduza um valor diferente de 0. |
0 Or > 100 |
O valor tem de ser igual a 0 ou superior a 100. |
Like "K???" |
O valor tem de ter quatro carateres e começar com a letra "K". |
< #1/1/2017# |
Introduza uma data anterior a 01/01/2017. |
>= #1/1/2017# And < #1/1/2008# |
A data tem de ocorrer em 2017. |
Para obter mais informações sobre a validação de dados, consulte o artigo Criar uma regra de validação para validar dados num campo.
Expressões de macros
Em alguns casos, poderá pretender executar uma ação ou uma série de ações numa macro apenas se uma determinada condição for verdadeira. Por exemplo, imagine que pretende que uma ação só seja executada quando o valor da caixa de texto Contador for igual a 10. Utilize uma expressão para definir a condição num bloco Se:
[Counter]=10
Tal como acontece com a propriedade ValidationRule , a expressão num bloco If é uma expressão condicional. Esta expressão tem de devolver um valor True ou False. A ação apenas decorre quando a condição for verdadeira.
Utilizar esta expressão para executar a ação |
Se |
---|---|
[City]="Paris" |
Faro é o valor da Localidade no campo do formulário a partir do qual foi executada a macro. |
DCount("[OrderID]", "Orders") > 35 |
Existem mais de 35 entradas no campo IDDaEncomenda da tabela Encomendas. |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 |
Existem mais de três entradas na tabela Detalhes da Encomenda nas quais o campo IDDaEncomenda da tabela corresponde ao campo IDDaEncomenda do formulário Encomendas. |
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# |
O valor do campo DataDeEnvio do formulário a partir do qual a macro é executada está compreendido entre 2-fev-2017 e 2-mar-2017. |
Forms![Products]![UnitsInStock] < 5 |
O valor do campo UnidadesEmStock do formulário Produtos é inferior a 5. |
IsNull([FirstName]) |
O valor NomePróprio do formulário a partir do qual a macro é executada é nulo (não tem valor). Esta expressão é equivalente a [NomePróprio] É Nulo. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 |
O valor no campo PaísRegião do formulário a partir do qual a macro é executada é Reino Unido e o valor do campo TotalDeEncomendas no formulário TotaisDeVendas é superior a 100. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 |
O valor no campo PaísRegião do formulário a partir do qual a macro é executada é França, Itália ou Espanha, e o código postal não é constituído por 5 carateres. |
MsgBox("Confirm changes?",1)=1 |
Clique em OK numa caixa de diálogo apresentada pela função CxMsg. Se clicar em Cancelar na caixa de diálogo, o Access ignora a ação. |
Consulte Também
Utilizar o Construtor de Expressões