Este artigo fornece exemplos de expressões no Access. Uma expressão combina operadores matemáticos ou lógicos, constantes, funções, campos de tabela, controlos e propriedades num único valor. Pode utilizar expressões no Access para calcular valores, validar dados e predefinir valores.
Neste artigo
Formulários e relatórios
Todas as expressões em formulários e relatórios
Consultas e filtros
Todas as expressões de consultas e filtros
Tabelas
Todas as expressões de tabelas
| Valores de campos predefinidos | Regras de validação de campos |
|---|
Macros
Formulários e relatórios
As tabelas nesta secção mostram expressões que calculam um valor num controlo num formulário ou relatório. Para criar um controlo calculado, introduza ControlSource uma expressão na propriedade do controlo em vez de numa tabela, campo ou consulta.
Nota
Também pode utilizar expressões num formulário ou relatório quando realça 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 trabalhar com texto ou 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 Left função para apresentar o primeiro caráter do valor num campo ou controlo denominado ProductName. |
=Right([AssetCode], 2) |
Utiliza a Right função para apresentar os últimos dois carateres do valor num campo ou controlo denominado AssetCode. |
=Trim([Address]) |
Utiliza a Trim função para apresentar o valor do controlo após remover espaços Address à esquerda e à direita. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Utiliza a IIf função para apresentar os valores dos City controlos e PostalCode se o Region controlo for nulo. Caso contrário, apresenta os Cityvalores de , Regione PostalCode controlos, separados por espaços. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
Utiliza o operador e a + propagação de valores nulos para apresentar os valores dos City controlos e PostalCode se o Region valor no campo ou controlo for nulo. Caso contrário, apresenta os Cityvalores do , Regione PostalCode campos ou controlos, separados por espaços. A propagação de valores nulos significa que, se uma parte de uma expressão for nula, toda a expressão é nula. O + operador suporta a propagação de valores nulos, mas o & operador não. |
Cabeçalhos e rodapés
Utilize as Page propriedades e Pages para apresentar ou imprimir números de página em formulários ou relatórios. Estas propriedades só 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, coloca uma caixa de texto na secção de cabeçalho ou rodapé do formulário ou relatório e, em seguida, utiliza uma expressão como as expressões 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 (+, -, *ou /) numa expressão e um dos controlos é nulo, o resultado de toda a expressão é nulo. Isto é conhecido como propagação de valores nulos. Se um controlo puder ter um valor nulo, pode evitar a propagação de valores nulos utilizando a função Nz para converter o valor nulo em zero. Por exemplo, utilize =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 ao dividir o valor do Sales controlo pela soma de todos os valores no Sales controlo. Se definir a Format propriedade do controlo para Percent, 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 sob a forma de mm-dd-yy, em que mm é o mês (1 a 12), dd é o dia (1 até 31) e yy são os dois últimos dígitos do ano (1980 até 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 True valor 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 Between operador para fornecer uma data de início e de fim e limitar os resultados da sua consulta a encomendas enviadas entre essas datas.
As seguintes secções fornecem exemplos de expressões para serem utilizadas em consultas.
Operações de texto em consultas
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 em consultas
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 FreightPercentage, e, em seguida, apresenta a percentagem dos encargos de transporte em cada subtotal. Esta expressão utiliza a Sum função para somar os valores no campo e, em Freight seguida, divide esses totais pela soma dos valores no Subtotal campo. Para utilizar esta expressão, converta a consulta selecionar numa consulta de Totais. Tem de utilizar a linha Total na grelha de estrutura e definir a célula Total deste campo como Expression. Para obter mais informações sobre como criar uma consulta de Totais, consulte Somar dados usando uma consulta. Se definir a Format propriedade do campo como Percent, 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 em consultas
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 em consultas
As expressões apresentadas na seguinte tabela utilizam funções SQL que agregam ou resumem dados. É frequente ver funções como Sum, Counte referidas Avg como 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 lhe permitem somar ou contar valores seletivamente. Por exemplo, pode contar apenas os valores dentro de um determinado intervalo ou procurar um valor de outra tabela. As funções agregadas de domínio incluem DSoma, DContar e DMédia.
Para calcular totais é frequentemente necessário criar uma consulta de Totais. Por exemplo, para resumir por grupo, utilize uma consulta de Totais. Para ativar uma consulta de Totais a partir da grelha de estrutura da consulta, selecione Totais no menu Ver .
| 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 FreightPercentage, e, em seguida, calcula a percentagem dos encargos de transporte em cada subtotal através da divisão da soma dos valores no Freight campo pela soma dos valores no Subtotal campo. Este exemplo utiliza a Sum função. Tem de utilizar esta expressão com uma consulta de Totais. Se definir a Format propriedade do campo como Percent, não inclua *100. Para obter mais informações sobre como criar uma consulta de Totais, consulte Somar dados usando 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 para apresentar encomendas Or enviadas para Coimbra ou para o Porto. |
| PaísRegiãoDeEnvio | In("Canada", "UK") |
Utiliza o In operador para apresentar encomendas enviadas para o Canadá ou para o Reino Unido. |
| PaísRegiãoDeEnvio | Not "USA" |
Utiliza o operador para apresentar as encomendas enviadas para todos os países/as regiões, exceto para os Not EUA. |
| NomeDoProduto | Not Like "C*" |
Utiliza o Not operador 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 pelas letras N até 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 pela 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 Between...And operador e as funções SomData e Data para apresentar as encomendas necessárias 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 Between...Andoperador para apresentar encomendas enviadas não antes de 5-Jan-2017 nem depois de 10-Jan-2017. |
| DataDeEntrega | Between Date( ) And DateAdd("M", 3, Date( )) |
Utiliza o operador para apresentar as Between...And 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 Like operador fornece uma grande flexibilidade quando está a tentar fazer corresponder linhas que seguem um padrão, porque pode utilizar Like com carateres universais e definir padrões para o Access corresponder. 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 localizar todos os nomes que começam com a letra S. Para obter mais informações, consulte o artigo Como operador.
| 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 | Like "Maison Dewe?" |
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
Utilize uma consulta atualização para modificar os dados num 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. Utilize estas expressões na Update To linha 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
linguagem SQL (Structured Query Language) (SQL) é 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, selecione Vista SQL no menu Ver . 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. Em seguida, o Access fornece esse valor quando é criado um novo registo que contém o campo ou quando é criado um objeto que contém o controlo. As expressões apresentadas na seguinte tabela apresentam 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, modifique a ValidationRule propriedade do campo ou controlo. Também deve considerar definir a ValidationText propriedade, que contém o texto que o Access apresenta quando a regra de validação é violada. Se não definir a propriedade, o ValidationText Access apresenta uma mensagem de erro predefinida.
Os exemplos apresentados na seguinte tabela mostram expressões de regras de validação para a ValidationRule propriedade e o texto associado para a ValidationText propriedade.
| 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 ValidationRule propriedade, a expressão num bloco Se é uma expressão condicional. Deve resolver para um ou TrueFalse. 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. |