Функция DAvg

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Функцию DAvg можно использовать для вычисления среднего значения набора значений в указанном наборе записей (домене). Используйте функцию DAvg в модуле Visual Basic для приложений (VBA), в макросе, в выражении запроса или в вычисляемом элементе управления.

Например, функцию DAvg можно использовать в строке условия запроса на выборку по стоимости доставки, чтобы ограничить результаты теми записями, где стоимость доставки превышает среднюю. Или можно использовать выражение, включающее функцию DAvg в вычисляемом элементе управления, и отображать среднее значение предыдущих заказов рядом со значением нового заказа.

Синтаксис

DAvg(expr, domain [, условия] )

Функция DAvg имеет следующие аргументы:

Аргумент Описание
выражение Обязательный аргумент. Выражение, определяющее поле с числовыми данными, для которых требуется вычислить среднее значение. Это может быть строковое выражение, определяющее поле в таблице или запросе, или выражение, которое выполняет вычисление данных в этом поле. В выражение можно включить имя поля таблицы, элемента управления формы, константы или функции. Если выражение выражает включает функцию, она может быть либо встроенной, либо определяемой пользователем, но не может быть агрегатной функции по подмножеству или агрегатной функции SQL.
подмножество Обязательный аргумент. Строковое выражение, определяющее набор записей, которые образуют подмножество. Это может быть имя таблицы или имя запроса, для которого не требуются параметры.
условия — необязательный аргумент. Строковое выражение, используемое для ограничения диапазона данных, с которыми выполняется функция DAvg . Например, условие часто эквивалентно предложению WHERE в выражении SQL, но без слова WHERE. Если условие опущено, функция DAvg вычисляет выражение для всего домена. Любое поле, включенное в условие , также должно быть полем в домене; в противном случае функция DAvg возвращает значение Null.

    

Замечания

Записи, содержащие значения NULL, при вычислении среднего значения не учитываются.

Независимо от того, используется ли функция DAvg в макросе или модуле, в выражении запроса или вычисляемом элементе управления, необходимо тщательно конструировать аргумент условия , чтобы обеспечить его правильное вычисление.

Функцию DAvg можно использовать для задания условий в строке "Условия" запроса. Предположим, что вы хотите просмотреть список всех продуктов, заказанных в количестве выше среднего. Для этого создайте запрос по таблицам "Заказы", "Заказано" и "Товары", включите поля "Марка" и "Количество" со следующим выражением в строке "Условия" под полем "Количество":

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

Функцию DAvg можно также использовать в выражении вычисляемого поля запроса или в строке "Обновление в" запроса на обновление.

Примечание

В выражении вычисляемого поля итогового запроса можно использовать как DAvg , так и Avg . При использовании функции DAvg значения усредняются перед группировкой данных. Если используется функция Avg , данные группируются перед усреднением значений в выражении поля.

Используйте функцию DAvg в вычисляемом элементе управления, когда необходимо указать условия для ограничения диапазона данных, для которых выполняется функция DAvg . Например, чтобы отобразить среднюю стоимость доставки для грузов, отправляемых в Калифорнию, задайте для свойства ControlSource текстового поля следующее выражение:

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

Если вы просто хотите вычислить среднее значение для всех записей в домене, используйте функцию Avg .

Функцию DAvg можно использовать в модуле или макросе либо в вычисляемом элементе управления в форме, если поле, которое требуется отобразить, не принадлежит к источнику записей, на котором основана форма. Например, предположим, что имеется форма, основанная на таблице "Заказы", и требуется включить поле "Количество" из таблицы "Заказано", чтобы отображать среднее число единиц товара, заказанных определенным клиентом. Для выполнения этих вычислений и отображения данных в форме используется функция DAvg.

Советы

  • Если функция DAvg используется в вычисляемом элементе управления, его можно поместить в заголовке или примечании формы, чтобы значение не пересчитывалось каждый раз при переходе к новой записи.
  • Если поле, из которого получено выражение , является числом, функция DAvg возвращает тип данных Double. Если функция DAvg используется в вычисляемом элементе управления, для повышения производительности включите в выражение функцию преобразования типа данных.
  • Хотя функцию DAvg можно использовать для определения среднего значения поля в сторонней таблице, удобнее создать запрос, содержащий все нужные поля, а затем построить на его основе форму или отчет.

Примечание

При использовании этой функции несохраненные изменения, внесенные в записи в домене , не отображаются. Если вы хотите, чтобы функция DAvg учитывала измененные значения, необходимо сначала сохранить изменения, нажав кнопку Сохранить запись в разделе Записи на вкладке Данные, переместив фокус на другую запись или используя метод Update.

Пример

Примечание

В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

Следующая функция возвращает среднюю стоимость доставки для заказов, отправленных в указанный день или после него. Подмножеством является таблица "Заказы" (Orders). Аргумент условия ограничивает результирующий набор записей на основе указанной страны или региона и даты поставки. Обратите внимание, что ключевое слово AND включено в строку для разделения нескольких полей в аргументе условия. Все записи, учитываемые при вычислении функции DAvg, отвечают обоим этим условиям.

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

Чтобы вызвать функцию, используйте следующую строку кода в окне интерпретации:

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