Руповые операции в запросе.
Пользователю при конструировании запросов иногда требуется получить информацию, которая построена на выполнении групповых операций. Например, найти минимальное или максимальное числовое значение в столбце таблицы, подсчитать количество записей в ней или др.
Для использования групповых операций пользователю необходимо в режиме Конструктора активизировать строку Групповые операции. Для этого необходимо щелкнуть мышью по кнопке Групповые операции
Групповые операции могут быть разделены на итоговые функции, выражения.
Итоговые функции выполняют определенные действия над данными. Назначение некоторых функций представлены в таблице.
Название функции | Описание |
COUNT | Считает количество непустых значений в поле |
SUM | Суммирует значения данных в поле |
MAX | Вычисляет максимальное значение данных в поле |
MIN | Вычисляет минимальное значение данных в поле |
AVG | Вычисляет среднее значение данных в поле |
Пример 6. Подсчитать количество водопадов в каждой стране, представленных в таблице «Водопад».
Для создания такого запроса в строке Групповые операции в окне Конструктора запросов, указывается операция Группировка и функция Count как показано на рисунке 4.48.
Выполненный запрос сформирует таблицу, представленную на рисунке 4.49.
Групповые операции позволяют выделить группы записей с одинаковыми значениями в указанных полях и использовать для этих групп одну из статистических функций. В Access предусмотрено девять статистических функций:
q Sum - сумма значений некоторого поля для группы
q Avg - среднее от всех значений поля в группе
q Max, Min - максимальное, минимальное значение поля в группе
q Count - число значений поля в группе без учета пустых значений
q Stdev - среднеквадратичное отклонение от среднего значения поля в группе
q Var - дисперсия значений поля в группе
q First и Last - значение поля из первой или последней записи в группе
апросы с параметрами.
Запрос в Access является объектом, который сохраняется в файле базы данных и может многократно повторяться. Все запросы, которые мы демонстрировали до сих пор, содержали конкретные значения дат, названий, имен и т. д. Если требуется повторить такой запрос с другими значениями в условиях отбора, его нужно открыть в режиме Конструктора, изменить условие и выполнить. Чтобы не делать многократно этих операций, можно создать запрос с параметрами. При выполнении такого запроса выдается диалоговое окно Введите значение параметра(Enter Parameter Value), в котором пользователь может ввести конкретное значение и затем получить нужный результат.
Покажем, как создавать запросы с параметрами на примере запроса "Отсортированный список товаров", который мы создавали ранее. Теперь мы с помощью этого запроса попробуем отобрать товары, поставляемые определенным поставщиком. Для этого:
1. Откройте данный запрос в режиме Конструктора.
2. Чтобы определить параметр запроса, введите в строку Условие отбора(Criteria) для столбца "Название" (CompanyName) вместо конкретного значения слово или фразу и заключите их в квадратные скобки, например [Поставщик:]. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.
3. Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных Текстовый(Text). Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите из контекстного меню команду Параметры(Parameters) или выполните команду менюЗапрос, Параметры(Query, Parameters). Появляется диалоговое окно Параметры запроса(Query Parameters), представленное на рис. 4.31.
4. В столбец Параметр(Parameter) нужно ввести название параметра точно так, как он определен в бланке запроса (легче всего это сделать путем копирования через буфер обмена), только можно не вводить квадратные скобки. В столбце Тип данных(Data Type) выберите из раскрывающегося списка необходимый тип данных. Нажмите кнопку ОК.
5. Нажмите кнопку Запуск(Run) на панели инструментов, чтобы выполнить запрос. При выполнении запроса появляется диалоговое окно Введите значение параметра(Input Parameter Value) (рис. 4.32), в которое нужно ввести значение, например Tokyo Traders. Результат выполнения запроса представлен на рис. 4.33. В него попадают только те товары, которые поставляются данным поставщиком.
В одном запросе можно ввести несколько параметров. При выполнении такого запроса для каждого из параметров будут поочередно выводиться диалоговые окна Введите значение параметрав том порядке, в котором параметры перечислены в бланке запроса.
апрос на обновление.
С помощью запроса на обновление можно добавлять, изменять или удалять данные в одной или нескольких записях. Запросы на обновление можно рассматривать как разновидность диалогового окнаПоиск и замена с более широкими возможностями. Следует ввести условие отбора (приблизительный аналог образца поиска) и условие обновления (приблизительный аналог образца замены). В отличие от диалогового окна Поиск и замена запрос на обновление может принимать несколько условий и позволяет обновить большое число записей за один раз, а также изменить записи сразу в нескольких таблицах.
Необходимо помнить приведенные ниже правила.
· Запрос на обновление нельзя использовать для добавления новых записей в таблицу, но можно менять имеющиеся пустые значения на определенные значения. Для добавления новых записей в одну или несколько таблиц используйте запрос на добавление.
Дополнительные сведения о запросах на добавление см. в статье Создание запроса на добавление.
· Запрос на обновление нельзя использовать для удаления записей целиком (строк) из таблицы, но можно менять имеющиеся непустые значения на пустые. Для удаления записей целиком (процесс, удаляющий также значение первичного ключа) следует использовать запрос на удаление.
Дополнительные сведения о запросах на удаление см. в статье Использование запросов на удаление для удаления одной или нескольких записей из базы данных.
· С помощью запросов на обновление можно изменять все данные в наборе записей.
Кроме того, нельзя выполнить запрос на обновление для следующих типов полей в таблице.
· Поля, содержащие результаты вычислений. Значения вычисляемых полей не хранятся в таблице постоянно. Они существуют только во временной памяти компьютера, после того как будут вычислены. Поскольку для вычисляемых полей не предусмотрено место постоянного хранения данных, их невозможно обновить.
· Поля, источником записей для которых служат итоговые запросы или перекрестные запросы.
· Поля с типом данных «Счетчик». Значения в полях с типом данных «Счетчик» изменяются только при добавлении записи в таблицу.
· Поля в запросах на объединение.
· Поля в запросах на уникальные значения и запросах на уникальные записи — запросах, возвращающих неповторяющиеся значения или записи. Это правило применимо при использовании запроса на обновление, а также при обновлении данных вручную путем ввода значений в форму или таблицу.
· Первичные ключи, участвующие в отношениях между таблицами, кроме тех случаев, когда эти отношения были настроены на автоматическое выполнение каскадного обновления через поля ключа и любые связанные поля. При каскадном обновлении автоматически обновляются любые значения внешнего ключа в дочерней таблице (таблица на стороне «многие» отношения «один-ко-многим») при изменении значения первичного ключа в родительской таблице (таблица на стороне «один» отношения «один-ко-многим»).
апрос на добавление.
Запрос на добавление добавляет набор записей (строк) из одной или нескольких исходных таблиц (или запросов) в одну или несколько результирующих таблиц. Обычно исходные таблицы и конечная таблица находятся в одной и той же базе данных, но это не обязательно. Например, появилось несколько новых клиентов, а также база данных, содержащая сведения о них. Чтобы не вводить новые данные вручную, их можно добавить в соответствующую таблицу имеющейся базы данных. Можно также использовать запросы на добавление при выполнении следующих действий.
· Добавление полей на основании условий отбора. Например, необходимо добавить имена и адреса клиентов с очень крупными заказами.
· Добавление записей, когда некоторых полей одной таблицы не существует в другой. Допустим, в таблице «Заказчики» пользователя имеется 11 полей, тогда как в таблице «Клиенты» другой базы данных из этих 11 полей имеется только 9. Можно использовать запрос на добавление только тех данных, которые находятся в соответствующих друг другу полях, а все остальные игнорировать.
Следует обратить внимание на то, что нельзя изменить данные в отдельных полях имеющихся записей с помощью запросов на добавление. Для этого используются запросы на обновление, а при помощи запросов на добавление можно только добавлять целые строки данных.
Дополнительные сведения о запросах на обновление см. в статье Создание запроса на обновление. Общие сведения о других способах добавления записей к базе данных или изменения имеющихся данных см. в статье Добавление в базу данных одной или нескольких записей.
К НАЧАЛУ СТРАНИЦЫ
Создание и выполнение запроса на добавление
Процесс создания запроса на добавление состоит из следующих основных шагов.
· Создание запроса на выборку
· Преобразование запроса на выборку в запрос на добавление
· Выбор конечных полей для каждого столбца в запросе на добавление
· Выполнение запроса на добавление записей
ПРИМЕЧАНИЕ. Помните, что результаты работы запроса на добавление невозможно отменить, поэтому следует действовать очень аккуратно. Кроме того, следует помнить, что типы данных, заданные для полей в исходной таблице, должны быть совместимыми с типами данных для полей конечной таблицы. Так, например, можно добавить числа в текстовое поле, но нельзя добавить текст в числовое поле, если только не используется выражение вида (Val(ТекстовоеПоле)), чтобы сначала преобразовать данные в тип данных «Числовой».
Дополнительные сведения о типах данных и способах их использования см. в статье Изменение типа данных для поля.