Você pode usar as funções DMin e DMax para determinar os valores mínimo e máximo em um conjunto especificado de registros (um domínio). Utilize as funções DMin e DMax num módulo Visual Basic for Applications (VBA), numa macro, numa expressão de consulta ou num controlo calculado.
Por exemplo, você pode usar as funções DMin e DMax em controles calculados em um relatório para exibir os menores e maiores volumes de pedidos para um cliente específico. Em alternativa, pode utilizar a função DMín numa expressão de consulta para apresentar todas as encomendas com um desconto superior ao desconto mínimo possível.
Sintaxe
DMin(expr, domínio [, critérios] )
DMax(expr, domínio [, critérios] )
As funções DMín e DMáx têm estes argumentos:
| Argumento | Descrição |
|---|---|
| expr | Obrigatório. Uma expressão que identifica o campo cujo valor mínimo ou máximo pretende determinar. Pode ser uma expressão de cadeia que identifica um campo numa tabela ou consulta ou pode ser uma expressão que executa um cálculo em dados nesse campo. Em expr, pode incluir o nome de um campo numa tabela, um controlo num formulário, uma constante ou uma função. Se expr inclui uma função, pode ser incorporada ou definida pelo utilizador, mas não pode ser outra agregação de domínio ou função de agregação SQL. |
| domínio | Obrigatório. Uma expressão de cadeia que identifica o conjunto de registos que constituem o domínio. Pode ser um nome de tabela ou um nome de consulta de uma consulta que não necessita de um parâmetro. |
| critérios | Opcional. Uma expressão de cadeia utilizada para restringir o intervalo de dados no qual a função DMin ou DMax é executada. Por exemplo, criteria é muitas vezes equivalente à cláusula WHERE numa expressão SQL, sem a palavra WHERE. Se o critério for omitido, as funções DMin e DMax avaliam expr em relação ao domínio inteiro. Qualquer campo incluído nos critérios também tem de ser um campo em domínio, caso contrário, as funções DMín e DMáx devolvem um resultado Nulo. |
Comentários
As funções DMin e DMax devolvem os valores mínimo e máximo que satisfazem os critérios. Se expr identificar dados numéricos, as funções DMín eDMáx retornam valores numéricos. Se expr identificar dados de cadeia, eles retornam a cadeia que é a primeira ou última alfabeticamente.
As funções DMin e DMax ignoram valores Nulos no campo referenciado por expr. No entanto, se nenhum registro satisfizer os critérios ou se o domínio não contiver registros, as funções DMin e DMax retornarão um Null.
Quer utilize a função DMín ou DMáx numa macro, módulo, expressão de consulta ou controlo calculado, tem de construir cuidadosamente o argumento critérios para se certificar de que será avaliado corretamente.
Pode utilizar a função DMín e DMáx para especificar critérios na linha Critérios de uma consulta, numa expressão de campo calculado numa consulta ou na linha Atualizar Para de uma consulta atualização.
Nota
Pode utilizar as funções DMín e DMáx ou as funções Min e Máximo numa expressão de campo calculado de uma consulta de totais. Se utilizar a função DMin ou DMax , os valores são avaliados antes de os dados serem agrupados. Se utilizar a função Min ou Max , os dados são agrupados antes de os valores no campo de expressão serem avaliados.
Utilize a função DMín ou DMáx num controlo calculado quando precisa de especificar critérios para restringir o intervalo de dados no qual a função é executada. Por exemplo, para exibir o frete máximo cobrado por um pedido enviado para a Califórnia, defina a propriedade ControlSource de uma caixa de texto com a seguinte expressão:
=DMax("[Freight]", "Orders", "[ShipRegion] = 'CA'")
Se quiser simplesmente encontrar o valor mínimo ou máximo de todos os registos no domínio, utilize a função Mínimo ou Máximo .
Pode utilizar a função DMín ou DMáx num módulo ou macro ou num controlo calculado num formulário se o campo que pretende apresentar não está na origem de registos na qual o seu formulário se baseia.
Sugestão
Apesar de poder utilizar a função DMino ou DMáx para localizar o valor mínimo ou máximo de um campo numa tabela com chave externa, pode ser mais eficiente criar uma consulta que contenha os campos de que precisa de ambas as tabelas e basear o seu formulário ou relatório nessa consulta.
Nota
As alterações não guardadas aos registos no domínio não são incluídas quando utiliza estas funções. Se pretender que a função DMax ou DMin seja baseada nos valores alterados, tem primeiro de guardar as alterações ao clicar em Guardar Registo em Registos no separador Dados , mover o foco para outro registo ou utilizar o método Update .
Exemplo
Nota
Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.
O exemplo seguinte devolve os valores mais baixos e mais altos do campo Transporte para encomendas enviadas para o Reino Unido. O domínio é uma tabela Encomendas. O argumento critérios restringe o conjunto de registos resultante àqueles em que EnviarPaísRegião é igual a Reino Unido.
Dim curX As Currency
Dim curY As Currency
curX = DMin("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")
curY = DMax("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")
No exemplo seguinte, o argumento critérios inclui o valor atual de uma caixa de texto denominada DataDaEncomenda. A caixa de texto está vinculada a um campo DataEncomenda numa tabela Encomendas. Tenha em consideração que a referência ao controlo não está incluída nas aspas (") que denotam as cadeias. Isso garante que cada vez que a função DMax é chamada, o Access obtém o valor atual do controle.
Dim curX As Currency
curX = DMax("[Freight]", "Orders", "[OrderDate] = #" _
& Forms!Orders!OrderDate & "#")
No exemplo seguinte, a expressão de critérios inclui uma variável, dteOrderDate. Tenha em atenção que os sinais de cardinal (#) estão incluídos na expressão da cadeia, para que, quando as cadeias forem concatenadas, devolvam a data.
Dim dteOrderDate As Date
Dim curX As Currency
dteOrderDate = #03/30/2000#
curX = DMin("[Freight]", "Orders", _
"[OrderDate] = #" & dteOrderDate & "#")