Za pomocą funkcji DMin i DMax można określić minimalne i maksymalne wartości w określonym zestawie rekordów (domenie). Funkcji DMin i DMax można używać w module języka Visual Basic for Applications (VBA), makrze, wyrażeniu zapytania lub kontrolce obliczeniowej.
Na przykład funkcji DMin i DMax można użyć w kontrolkach obliczeniowych raportu, aby wyświetlić najmniejsze i największe kwoty zamówień dla określonego klienta. Można również użyć funkcji DMin w wyrażeniu zapytania w celu wyświetlenia wszystkich zamówień z rabatem większym niż możliwy rabat minimalny.
Składnia
DMin(wyrażenie, domena [, kryteria] )
DMax(wyrażenie, domena [, kryteria] )
Funkcje DMin i DMax mają następujące argumenty:
| Argumenty argumentów | Opis |
|---|---|
| wyrażenie | Argument wymagany. Wyrażenie identyfikujące pole, dla którego ma zostać wyznaczona wartość minimalna lub maksymalna. Może to być wyrażenie tekstowe identyfikujące pole w tabeli lub zapytaniu albo wyrażenie wykonujące obliczenia na danych w tym polu. W wyrażeniu można zawrzeć nazwę pola w tabeli, kontrolkę w formularzu, stałą lub funkcję. Jeśli wyrażenie zawiera funkcję, może to być funkcja wbudowana lub zdefiniowana przez użytkownika, ale z wyłączeniem funkcji agregującej domeny i funkcji agregującej języka SQL. |
| domena | Argument wymagany. Wyrażenie tekstowe identyfikujące zestaw rekordów stanowiący domenę. Może to być nazwa tabeli lub nazwa zapytania, o ile to zapytanie nie wymaga parametru. |
| kryteria | Argument opcjonalny. Wyrażenie tekstowe używane w celu ograniczenia zakresu danych, dla którego wykonywana jest funkcja DMin lub DMax . Na przykład kryteria są często takie same, jak klauzula WHERE w wyrażeniu SQL, z pominięciem wyrazu WHERE. Jeśli kryteria zostaną pominięte, funkcje DMin i DMax ocenią wyrażenie względem całej domeny. Każde pole zawarte w kryteriach musi być także polem w domenie. W przeciwnym razie funkcje DMin i DMax zwracają wartość Null. |
Spostrzeżenia
Funkcje DMin i DMax zwracają wartości minimalne i maksymalne spełniające kryteria. Jeśli wyrażenie identyfikuje dane numeryczne, funkcje DMin i DMax zwracają wartości liczbowe. Jeśli wyrażenie identyfikuje dane ciągu, zwraca ciąg, który jest pierwszy lub ostatni w kolejności alfabetycznej.
Funkcje DMin i DMax ignorują wartości Null w polu, do którego odwołuje się wyrażenie. Jeśli jednak żaden rekord nie spełnia kryteriów lub jeśli domena nie zawiera żadnych rekordów, funkcje DMin i DMax zwracają wartość Null.
Niezależnie od tego, czy funkcja DMin , czy DMax jest używana w makrze, module, wyrażeniu zapytania czy kontrolce obliczeniowej, należy starannie skonstruować argument kryteria , aby zagwarantować, że zostanie on poprawnie obliczony.
Funkcji DMin i DMax można używać do określania kryteriów w wierszu Kryteria kwerendy, w wyrażeniu pola obliczeniowego w zapytaniu lub w wierszu Aktualizacja do kwerendy aktualizującej.
Uwaga
W wyrażeniu pola obliczeniowego kwerendy podsumowującej można użyć funkcji DMin i DMax lub funkcji Min i Max . W przypadku korzystania z funkcji DMin lub DMax wartości są szacowane przed zgrupowaniem danych. W przypadku korzystania z funkcji Minimum lub Maksimum dane są grupowane przed oszacowaniem wartości w wyrażeniu pola.
Funkcji DMin lub DMax w kontrolce obliczeniowej należy użyć, aby określić kryteria ograniczające zakres danych, na których ta funkcja jest wykonywana. Aby na przykład wyświetlić maksymalną opłatę frachtową dla zamówienia wysłanego do Kalifornii, należy ustawić następujące wyrażenie we właściwości ŹródłoKontrolki pola tekstowego:
=DMax("[Freight]", "Orders", "[ShipRegion] = 'CA'")
Jeśli chcesz po prostu znaleźć minimalną lub maksymalną wartość wszystkich rekordów w domenie, użyj funkcji Min lub Max .
Funkcji DMin lub DMax można użyć w module, makrze lub kontrolce obliczeniowej formularza, jeśli pole, które ma zostać wyświetlone, nie znajduje się w źródle rekordów, na którym jest oparty dany formularz.
porada
Chociaż można użyć funkcji DMin lub DMax w celu znalezienia minimalnej lub maksymalnej wartości w polu tabeli obcej, bardziej efektywnym rozwiązaniem może być utworzenie zapytania zawierającego potrzebne pola z obu tabel i oparcie formularza lub raportu na tym zapytaniu.
Uwaga
Niezapisane zmiany wprowadzone w rekordach domeny nie są uwzględniane podczas używania tych funkcji. Jeśli chcesz, aby funkcja DMax lub DMin była oparta na zmienionych wartościach, musisz najpierw zapisać zmiany, klikając przycisk Zapisz rekord w obszarze Rekordy na karcie Dane , przenosząc fokus na inny rekord lub używając metody aktualizacji .
Przykład
Uwaga
Poniższe przykłady przedstawiają sposób użycia tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać dodatkowe informacje na temat pracy w języku VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok przycisku Wyszukaj i wprowadź odpowiednie terminy w polu wyszukiwania.
W poniższym przykładzie zwracane są najniższe i najwyższe wartości z pola Fracht dla zamówień wysłanych do Zjednoczonego Królestwa. Domeną jest tabela Zamówienia. Argument kryteria ogranicza zestaw rekordów do rekordów, dla których wartość argumentu KrajOdbiorcy równa się Zjednoczonemu Królestwu.
Dim curX As Currency
Dim curY As Currency
curX = DMin("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")
curY = DMax("[Freight]", "Orders", _
"[ShipCountryRegion] = 'UK'")
W następnym przykładzie argument kryteria zawiera bieżącą wartość pola tekstowego o nazwie DataZamówienia. Pole tekstowe jest powiązane z polem DataZamówienia w tabeli Zamówienia. Zwróć uwagę, że odwołanie do kontrolki nie jest ujęte w podwójny cudzysłów (") oznaczający ciągi. Dzięki temu przy każdym wywołaniu funkcji DMax program Access uzyskuje bieżącą wartość z kontrolki.
Dim curX As Currency
curX = DMax("[Freight]", "Orders", "[OrderDate] = #" _
& Forms!Orders!OrderDate & "#")
W następnym przykładzie wyrażenie kryterium zawiera zmienną dteOrderDate. Zwróć uwagę, że znaki numeru (#) są zawarte w wyrażeniu ciągu, tak że gdy ciągi są połączone, otaczają datę.
Dim dteOrderDate As Date
Dim curX As Currency
dteOrderDate = #03/30/2000#
curX = DMin("[Freight]", "Orders", _
"[OrderDate] = #" & dteOrderDate & "#")