Самыми распространенными функциями в запросах на группировку являются функции, которые возвращают некоторый итоговый результат для нескольких записей. Вот примеры.
- Функция Sum возвращает сумму значений содержащихся в заданном поле запроса.
- Функция Count вычисляет количество записей, возвращенных запросом.
- Функции Min, Max возвращают минимальное или максимальное из значений, содержащихся в заданном поле запроса.
- Функции First и Last возвращают значение поля из первой или последней записи в результирующем наборе, который возвращается запросом.
Примеры использования простейшей функции суммирования и подсчета записей в операциях по кассе показаны ниже
- SELECT [КАССА примеры].дбСчет AS Приход, Sum([КАССА примеры].Сумма) AS SumСумма FROM [КАССА примеры] GROUP BY [КАССА примеры].дбСчет;
- SELECT Count(*) AS [ЧислоБольшихОпераций] FROM [КАССА примеры] WHERE [Сумма] > 10000
Функции группировки |
Кроме этих функций, которые есть и в Access, SQL Server, MySQL и других базах данных, Access предлагает функции с фильтрацией, т.е. функции DSum, DCount и другие. Их используют уже реже, но значение их для построения интерфейса имеет большое значение, т.к. можно значительно упростить код приложения, если знать как их использовать. Например, указанный ниже запрос выводит число операций по кассе, где сумма больше 10 тысяч рублей. Обратите внимание, что этот запрос возвращает 1 поле, которое может использоваться в SQL запросах, а не только в VBA, а фильтр записей ("[Сумма]>10000") имеет разные виды реализаций. Примеры
- Me.Результат = DCount("Сумма","Касса примеры","[Сумма] > 10000") AS ЧислоБольшихОпераций;
- Me.Результат = DCount("Сумма", "Касса примеры", "[Сумма] > " & Forms("Форма1")!МаксимальнаяСумма)
- Me.Результат = DCount("Сумма", "Касса примеры", "[Сумма] > " & GetMaxSum())
- Public Function GetMaxSum() As Currency
GetMaxSum = Forms("Форма1")!МаксимальнаяСумма End Function
- Me.Результат = DLookUp("Format([Сумма],""0.0"")&"" "" & [дбСчет]","Касса примеры","[Сумма] > 10000")
Обратите внимание на последний пример, там где должно стоять ! 1 поле, мы подставили выражение, используя ряд полей Сумма и дбСчет. Это позволяет одним запросом сразу запросить несколько полей из базы данных, а потом из этих данных найти нужное поле, например, так buffer = Split(Me.Результат," ") |
|
Таким образом, используя эти функции можно построить простейший код на VBA, без применения серверных процедур с параметрами и команд из ADO библиотеки.
|
|