Funkcja DAvg

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Za pomocą funkcji DAvg można obliczyć średnią zbioru wartości w określonym zestawie rekordów (domeny). Funkcji DAvg należy używać w module Visual Basic for Applications (VBA), makrze, wyrażeniu zapytania lub kontrolce obliczeniowej.

Można na przykład użyć funkcji DAvg w wierszu kryteriów zapytania wybierającego dla kosztów frachtu, aby ograniczyć wyniki do tych rekordów, w których koszt frachtu przekracza średnią. Możesz też użyć wyrażenia zawierającego funkcję DAvg w kontrolce obliczeniowej i wyświetlić średnią wartość poprzednich zamówień obok wartości nowej kolejności.

Składnia

DAvg(wyr., domena [, kryteria] )

W składni funkcji DAvg występują następujące argumenty:

Argument Opis
wyrażenie Argument wymagany. Wyrażenie identyfikujące pole zawierające dane liczbowe, które mają zostać uśrednione. Może to być wyrażenie ciągu identyfikujące pole w tabeli lub zapytaniu albo wyrażenie wykonujące obliczenia na danych w tym polu. W wyr. można dołączyć nazwę pola w tabeli, kontrolkę w formularzu, stałą lub funkcję. Jeśli wyrażenie zawiera funkcję, może być wbudowana lub zdefiniowana przez użytkownika, ale nie może być inną funkcją agregacji domeny lub funkcji agregacji 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 ciągu służące do ograniczania zakresu danych, dla którego wykonywana jest funkcja DAvg . Na przykład kryteria są często równoważne klauzuli WHERE w wyrażeniu SQL bez wyrazu WHERE. Jeśli argument kryteria zostanie pominięty, funkcja DAvgoceni wyrażenie względem całej domeny. Każde pole zawarte w kryteriach musi być również polem w domenie. W przeciwnym razie funkcja DAvg zwraca wartość Null.

    

Spostrzeżenia

Rekordy zawierające wartości Null nie są uwzględniane w obliczeniach średniej.

Niezależnie od tego, czy używasz funkcji DAvg w makrze lub module, w wyrażeniu zapytania, czy w kontrolce obliczeniowej, musisz starannie skonstruować argument kryteria , aby upewnić się, że zostanie on poprawnie oceniony.

Za pomocą funkcji DAvg można określić kryteria w wierszu Kryteria zapytania. Załóżmy na przykład, że chcesz wyświetlić listę wszystkich produktów zamówionych w ilości powyżej średniej liczby zamówień. Możesz utworzyć zapytanie w tabelach Zamówienia, Szczegóły zamówień i Produkty oraz dołączyć pole Nazwa produktu i pole Ilość, a w wierszu Kryteria poniżej pola Ilość w wierszu Kryteria wpisz następujące wyrażenie:

>DAvg("[Quantity]", "Orders")

Funkcji DAvg można także użyć w wyrażeniu pola obliczeniowego w zapytaniu lub w wierszu Aktualizacja do zapytania aktualizującego.

Uwaga

Funkcji DAvg lub Avg można użyć w wyrażeniu pola obliczeniowego w zapytaniu podsumowującym. Jeśli używasz funkcji DAvg , wartości są uśredniane przed zgrupowaniem danych. Jeśli używasz funkcji Avg , dane są grupowane przed wartościami w wyrażeniu pola są uśredniane.

Funkcji DAvg należy używać w kontrolce obliczeniowej, gdy trzeba określić kryteria ograniczające zakres danych, dla którego wykonywana jest funkcja DAvg . Aby na przykład wyświetlić średni koszt frachtu dla przesyłek wysłanych do Kalifornii, ustaw właściwość ŹródłoKontrolki pola tekstowego na następujące wyrażenie:

=DAvg("[Freight]", "Orders", "[ShipRegion] = 'CA'")

Jeśli chcesz po prostu obliczyć średnią wszystkich rekordów w domenie, użyj funkcji Avg .

Funkcji DAvg można używać w module lub makrze albo w kontrolce obliczeniowej w formularzu, jeśli pole, które ma zostać wyświetlone, nie znajduje się w źródle rekordów, na którym jest oparty formularz. Załóżmy na przykład, że masz formularz oparty na tabeli Zamówienia i chcesz dołączyć pole Ilość z tabeli Szczegóły zamówień, aby wyświetlić średnią liczbę elementów zamówionych przez określonego klienta. Za pomocą funkcji DAvg można wykonać to obliczenie i wyświetlić dane w formularzu.

Porady

  • Jeśli używasz funkcji DAvg w kontrolce obliczeniowej, warto umieścić kontrolkę w nagłówku lub stopce formularza, aby wartość tej kontrolki nie była ponownie obliczana po każdym przejściu do nowego rekordu.
  • Jeśli typ danych pola, z którego pochodzi wyrażenie, jest liczbą, funkcja DAvg zwraca typ danych Double. Jeśli używasz funkcji DAvg w kontrolce obliczeniowej, uwzględnij w wyrażeniu funkcję konwersji typu danych, aby zwiększyć wydajność.
  • Chociaż za pomocą funkcji DAvg można określić średnią wartości w polu tabeli obcej, bardziej efektywne może być utworzenie zapytania zawierającego wszystkie potrzebne pola, a następnie oparcie formularza lub raportu na tym zapytaniu.

Uwaga

Niezapisane zmiany rekordów w domenie nie są uwzględniane podczas korzystania z tej funkcji. Jeśli chcesz, aby funkcja DAvg była oparta na zmienionych wartościach, należy najpierw zapisać zmiany, klikając pozycję Zapisz rekord w obszarze Rekordy na karcie Dane , przenosząc fokus do innego rekordu 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.

Poniższa funkcja zwraca średni koszt frachtu dla zamówień wysłanych w określonym dniu lub później. Domena to tabela Zamówienia. Argument kryteria ogranicza wynikowy zestaw rekordów na podstawie danego kraju/regionu i daty wysyłki. Należy pamiętać, że słowo kluczowe ORAZ jest zawarte w ciągu oddzielania wielu pól w argumacie kryteria . Wszystkie rekordy uwzględnione w obliczeniach funkcji DAvg będą miały oba te kryteria.

Public Function AvgFreightCost _
    (ByVal strCountryRegion As String, _
     ByVal dteShipDate As Date) As Double
    AvgFreightCost = DAvg("[Freight]", "Orders", _
        "[ShipCountryRegion] = '" & strCountryRegion & _
        "'AND [ShippedDate] >= #" & dteShipDate & "#")
End Function

Aby wywołać funkcję, w oknie bezpośrednim użyj następującego wiersza kodu:

:AvgFreightCost "UK", #1/1/96#