Функция DAvg

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

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

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

Синтаксис

DAvg(expr, domain [, criteria] )

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

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

    

Замечания

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

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

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

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

Вы также можете использовать функцию DAvg в выражении вычисляемого поля в запросе или в строке Update To запроса на обновление.

Примечание

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

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

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

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

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

Советы

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

Примечание

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

Пример

Примечание

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

Следующая функция возвращает среднюю стоимость доставки для заказов, отправленных в указанный день или после него. Подмножеством является таблица "Заказы" (Orders). Аргумент criteria ограничивает результирующий набор записей на основе заданной страны или региона и даты отправки. Обратите внимание, что ключевое слово 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#