Создание выполняющихся итоговых запросов в Microsoft Access
Дополнительно: требуются экспертные навыки программирования, взаимодействия и многопользовательских навыков.
Эта статья применима к файлам баз данных Microsoft Access (.mdb) или (.accdb).
Сводка
В этой статье демонстрируются два метода, которые можно использовать для создания выполняющегося запроса итогов. Выполняемый запрос итогов — это запрос, в котором итог для каждой записи представляет собой суммирование этой записи и всех предыдущих записей. Этот тип запроса полезен для отображения совокупных итогов по группе записей (или за период времени) в графе или отчете.
Примечание Демонстрацию метода, используемого в этой статье, можно увидеть в примере файла Qrysmp00.exe.
Дополнительная информация
Способ 1
Первый метод использует функцию DSum и критерии в запросе для создания выполняемой суммы с течением времени. Функция DSum суммирует текущую запись и все предыдущие записи. Когда запрос переходит к следующей записи, функция DSum снова запускается и обновляет совокупный итог.
В следующем примере запроса используется таблица Orders из примера базы данных Northwind для создания текущей суммы затрат на доставку за каждый месяц в 1997 году. Выборка данных ограничена одним годом по соображениям производительности. Так как функция DSum выполняется один раз для каждой записи в запросе, для завершения обработки запроса может потребоваться несколько секунд (в зависимости от скорости компьютера). Чтобы создать и выполнить этот запрос, выполните следующие действия.
Откройте пример базы данных Northwind.
Создайте новый запрос на выборку и добавьте таблицу Orders .
В меню Вид выберите пункт Итоги.
Примечание В Access 2007 щелкните Итоги в группе Показать и скрыть на вкладке Конструктор .
В первом столбце сетки конструктора запроса введите следующее выражение в поле Поле и выберите следующие значения в полях Итого, Сортировка и Показать:
Field: AYear: DatePart("yyyy",[OrderDate]) Total: Group By Sort: Ascending Show: Yes
Выражение в поле Поле отображает и сортирует годовую часть поля OrderDate.
Во втором столбце сетки конструктора запроса введите следующее выражение в поле Поле и выберите следующие значения для полей Итого, Сортировка и Показать:
Field: AMonth: DatePart("m",[OrderDate]) Total: Group By Sort: Ascending Show: Yes
Выражение в поле Поле сортирует и отображает часть месяца поля Дата заказа в виде целочисленного значения от 1 до 12.
В третьем столбце сетки конструктора запроса введите следующее выражение в поле Поле и выберите следующие значения для полей Итого и Показать.
ПРИМЕЧАНИЕ В следующем примере символ подчеркивания (_) в конце строки используется в качестве символа продолжения строки. Удалите символ подчеркивания из конца строки при повторном создании этого примера.
Field: RunTot: DSum("Freight","Orders","DatePart('m', _ [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _ [OrderDate])<=" & [AYear] & "") Total: Expression Show: Yes
Выражение в поле Поле использует функцию DSum() для суммирования поля Freight, если значения в полях AMonth и AYear меньше или равны текущей записи, обрабатываемой запросом.
В четвертом столбце сетки конструктора запроса введите следующее выражение в поле Поле и выберите следующие значения для полей Итого, Сортировка и Показать:
Field: FDate: Format([OrderDate],"mmm") Total: Group By Sort: Ascending Show: Yes
Выражение в поле Поле отображается каждый месяц в текстовом формате, например январь, февраль, март и т. д.
В пятом столбце сетки конструктора запроса введите следующее выражение в поле Поле и выберите следующие значения в полях Итого, Условия и Показать:
Field: DatePart("yyyy",[OrderDate]) Total: Where Criteria: 1997 Show: No
Выражение в поле Поле фильтрует набор записей запроса, чтобы включить данные только за 1997 год.
Выполните запрос. Обратите внимание, что в поле RunTot отображаются следующие записи с суммой выполнения:
AYear AMonth RunTot FDate -------------------------------------- 1997 1 2238.98 Jan 1997 2 3840.43 Feb 1997 3 5729.24 Mar 1997 4 8668.34 Apr 1997 5 12129.74 May 1997 6 13982.39 Jun 1997 7 17729.29 Jul 1997 8 22204.73 Aug 1997 9 26565.26 Sep 1997 10 32031.38 Oct 1997 11 36192.09 Nov 1997 12 42748.64 Dec
Способ 2
Второй метод использует запрос итогов с функцией DSum() для создания выполняющихся итогов над группой.
В следующем примере запроса таблица Orders используется для суммирования затрат на фрахт на одного сотрудника, а также для вычисления суммы затратовки. Чтобы создать и выполнить запрос, выполните следующие действия.
Откройте пример Northwind.mdb базы данных.
Создайте новый запрос на выборку и добавьте таблицу Orders.
В меню Вид щелкните Итоги.
Примечание В Access 2007 щелкните Итоги в группе Показать и скрыть на вкладке Конструктор .
В первом столбце сетки конструктора запроса добавьте следующее поле в поле Поле и выберите следующие значения для полей Итого и Показать:
Field: EmpAlias: EmployeeID Total: Group By Show: Yes
Это поле группировано по EmployeeID.
Во втором столбце сетки конструктора запроса добавьте следующее поле в поле Поле и выберите следующие значения для полей Итого и Показать:
Field: Freight Total: Sum Show: Yes
Это поле суммирует данные о грузоперевозках.
В третьем столбце сетки конструктора запроса введите следующее выражение в поле Поле и выберите следующие значения для полей Итого и Показать.
ПРИМЕЧАНИЕ В следующем примере символ подчеркивания (_) в конце строки используется в качестве символа продолжения строки. Удалите символ подчеркивания из конца строки при повторном создании этого примера.
Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00") Total: Expression Show: Yes
Выражение в поле Поле использует функцию DSum() для суммирования поля Freight, если Идентификатор сотрудника меньше или равен текущему EmpAlias, а затем форматирует поле в долларах.
Выполните запрос. Обратите внимание, что в поле RunTot отображаются следующие записи с суммой выполнения:
Employee SumOfFreight RunTot ------------------------------------------------- Davolio, Nancy $8,836.64 $8,836.64 Fuller, Andrew $8,696.41 $17,533.05 Leverling,Janet $10,884.74 $28,417.79 Peacock, Margaret $11,346.14 $39,763.93 Buchanan, Steven $3,918.71 $43,682.64 Suyama, Michael $3,780.47 $47,463.11 King, Robert $6,665.44 $54,128.55 Callahan, Laura $7,487.88 $61,616.43 Dodsworth, Anne $3,326.26 $64,942.69
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по