Создание поля со списком для ввода значений в таблицу
В том случае, если значение какого-либо поля таблицы повторяется, удобнее вводить это значение путем выбора из списка.
В качестве списка можно использовать фиксированный набор значений или набор значений из другой таблицы. Рассмотрим оба способа создания списка.
Использование фиксированного набора значений.
Создадим поле для ввода значений «Ед_изм» в таблице «ТОВАРЫ». Для этого выберем в окне базы данных таблицу «ТОВАРЫ» и войдем в режим конструктора. В открывшемся окне конструктора выделим колонку Тип данных поля «Ед_изм» и в списке доступных типов полей выберем элемент Мастер подстановок.
В первом диалоговом окне Создание подстановки активизируем опцию будет введен фиксированный набор значений и нажмем кнопку Далее. В появившемся втором окнеСоздание подстановки введем набор значений, которые может принимать поле «Ед_изм» (рисунок 2.10), и нажмем кнопку Готово.
Рисунок 2.10 - Создание фиксированного списка значений поля «Ед_изм»
Использование набора значений из другой таблицы.
Для создания списка ввода поля «Клиент» таблицы «ТОВАРЫ» из значений поля другой таблицы (поле «Клиент» таблицы «ПОКУПАТЕЛИ» ) в окне Создание подстановкивыберем опцию столбец подстановки использует значения из таблицы или запросаи нажмем кнопку Далее. В появившемся втором окне Создание подстановки выберем таблицу, из которой нужно взять значение поля (у нас это таблица «ПОКУПАТЕЛИ»), и нажатием кнопки Далеепереходим к следующему окну (рисунок 2.11).
В этом окне из списка Доступные поля выбираем нужное («Клиент»), щелчком на кнопку > переводим его в раздел Выбранные поля и снова нажимаем кнопку Далее, после чего в появившемся окне остается нажать кнопку Готово.
Проделав аналогичные операции с полем «Поставщик» таблицы «ПОСТАВЩИКИ», получим список для ввода значений в это поле.
Теперь можно полностью заполнить данными таблицу «ТОВАРЫ». Пример заполненной таблицы показан на рисунке 2.12.
Рисунок 2.11 - Выбор полей для формирования списка
Рисунок 2.12 - Заполненная таблица «ТОВАРЫ»
ЗАПРОСЫ И ФИЛЬТРЫ
Запросы предназначены для отбора данных, удовлетворяющих заданным критериям. Результатом выполнения запроса является набор записей, собранных во временном наборе данных и представленных в виде таблицы.
В ACCESS запросы делятся на QBE – запросы (Query By Example – запрос по образцу), параметры которых устанавливаются в окне конструктора запросов, и SQL – запросы (Structured Query Language – структурированный язык запросов), при создании которых применяются операторы и функции языка SQL. Последний вид запросов чаще всего используется в том случае, если пользователь из ACCESS делает запрос к внешней базе данных, поэтому в данном пособии SQL – запросы не рассматриваются.
Запросы на выборку
Одним из наиболее распространенных типов QBE – запросов является запрос на выборку. Чтобы научиться создавать такие запросы, создадим запрос на выборку данных из таблицы «ТОВАРЫ», удовлетворяющий условиям: товар поставлен поставщиком Fruct, срок годности истек до 01.02.99, количество товара – больше или равно 30 единиц. Полученному запросу присвоим имя «ОТРАВА ОТ FRUCT».
Для создания такого запроса выполним следующую последовательность действий:
0 ЗапросыqСоздание запроса в режиме конструктора
0 ТаблицыqТОВАРЫqДобавитьqЗакрыть
Тем самым мы определили исходные данные, с которыми будет работать запрос, и вызвали окно конструктора запросов, которое разделено на две части. В верхней половине находятся окна таблиц со списками полей.
В запрос не обязательно нужно включать все поля выбранных таблиц. Например, в рассматриваемом примере нас интересуют: наименование товара, количество, поставщик и срок годности.
Добавить нужные поля в бланк запроса можно путем перетаскивания их имен из списка, находящегося в верхней части окна конструктора, в строку бланка запроса Поле. После перетаскивания окно конструктора должно выглядеть так, как показано на рисунке 3.1.
В процессе работы с ACCESS большинство запросов используют только часть полей (как в нашем случае), но иногда требуется включить в запрос все поля таблицы. Это можно выполнить следующими способами:
¨ Маркируйте все поля, выполнив двойной щелчок на строке заголовка таблицы, и перетащите их в первую строку бланка запроса. ACCESS автоматически разместит каждое поле таблицы в отдельной колонке;
¨ Маркируйте символ * в списке полей таблицы и перетащите его в бланк запроса. В результате все поля будут включены в запрос, но в бланке появится только запись Имя таблицы.
Рисунок 3.1 - Результат включения полей в запрос
Следующим этапом создания запроса является установка критериев отбора записей, которые указываются для одного или нескольких полей. Критериями для нашего отбора будут:
«Поставщик» = Fruct
«Годен до» < 01.02.99
«Кол-во» >= 30
После ввода каждого критерия нужно нажать клавишу <Enter>, при этом ACCESS проверит синтаксис критерия и нормализует запись в соответствии с внутренними правилами записи критериев.
Записи в генерируемом при выполнении запроса динамическом наборе данных могут быть отсортированы по какому-то полю. Для выполнения сортировки следует перейти в соответствующий столбец бланка запроса и указать способ сортировки в строке Сортировка. При выполнении щелчка на этой строке появляется список с перечнем видов сортировки. В нашем примере расположим товары в алфавитном порядке. Для этого в столбце Товар выполним щелчок в строке Сортировка и в появившемся списке выберем опцию по возрастанию.
Окончательно нижняя часть окна запроса представлена на рисунке 3.2.
Рисунок 3.2 - Пример задания критерия отбора записей
Осталось, как обычно, сохранить полученный запрос под нужным именем:
Ø Файл Ø Сохранить
Имя запроса : = Отрава от fruct
q ОК
Результат выполнения запроса показан на рисунке 3.3.
Рисунок 3.3 - Результат выполнения запроса, показанного на рисунке 3.2
В запросах часто используются подстановочные знаки (таблица 3.1), которые позволяют указать образец поиска в следующих случаях:
¨ известна только часть значения;
¨ требуется найти значения, начинающиеся с конкретной буквы или соответствующие определенному шаблону.
Таблица 3.1 - Подстановочные знаки для поиска значений
Знак | Пояснение | Пример |
* | Соответствует любой последовательности символов, может использоваться в качестве первого или последнего элемента текстовой строки. | * а – любое слово, заканчивающееся буквой а |
? | Соответствует одному любому текстовому символу. | т?р – поиск слов тор, тир, тур |
[ ] | Соответствует любому одному символу из заключенных в скобки. | т[оу]р – поиск слов тор, тур, но не тир |
- | Соответствует любому символу из диапазона. | т[а-о] – поиск слов тир, тор, но не тур |
# | Соответствует любой цифре | 1#3 поиск записей 103, 113, 123, … |
В том случае, если в общий критерий поиска требуется вставить оператор ИЛИ, нужно просто использовать новую строку для каждого условия.
На рисунке 3.4 показан пример более сложного запроса поиска записей из таблицы «ТОВАРЫ», удовлетворяющих условиям:
¨ название товара начинается с буквы А или заканчивается буквой и;
¨ единица измерения товара – кг;
¨ количество товара, начинающегося с буквы А, находится в диапазоне [20-80];
¨ цена товара, заканчивающегося буквой и, либо меньше 100 рублей, либо больше 400 рублей.
Рисунок 3.4 - Пример сложного запроса на выборку
Запросы на удаление
Запросы этого типа служат для удаления из таблицы групп записей, соответствующих некоторому критерию отбора.
Прежде всего необходимо разработать запрос на выборку удаляемых записей, как это было рассмотрено в предыдущем разделе, желательно, выполнить этот запрос, чтобы проверить корректность заданных критериев. Затем следует вернуться в режим конструктора и активизировать в меню Запрос команду Удаление. ACCESS добавит в бланк запроса строку Удаление и введет в ее ячейки значение Условие. Это означает, что пользователь может установить дополнительные критерии отбора. Далее следует выполнить запрос, нажав кнопку с изображением восклицательного знака на панели инструментов.
Перед выполнением запроса на удаление ACCESS дважды потребует подтверждения выполнения операции. Первое подтверждение (рисунок 3.5) появляется при любом действии, связанном с возможность потери или изменения информации в базе данных, никакого анализа запроса при этом не производится. После нажатия на кнопку Да запрос будет проанализирован и в специальном диалоговом окне (рисунок 3.6) ACCESS укажет, сколько записей удаляется из таблицы и потребует подтвердить удаление. Если запрос составлен с ошибкой, то в окне, показанном на рисунке 3.6 вместо числа удаляемых записей будет сообщение об ошибке в запросе.
Рисунок 3.5 - Первое диалоговое окно запроса на удаление.
Рисунок 3.6 - Диалоговое окно с указанием числа удаляемых записей.
Если в окне исходных таблиц для запроса (верхняя часть окна конструктора запросов) присутствует несколько связанных таблиц, то в запросе необходимо обязательно указать из какой таблицы нужно удалять записи. Для этого нужно из соответствующей таблицы перетащить поле, помеченное звездочкой в строку Поле запроса, при этом в строке Удаление появится значение Из.
Записи, удаленные посредством запроса, нельзя восстановить, поэтому следует тщательно анализировать критерии отбора.
Запрос на обновление
Используя запрос на обновление, пользователь может изменить группу записей, отобранную на основе определенных критериев. При разработке запроса на обновление прежде всего создается и проверяется запрос на выборку. Затем в режиме конструктора активизируется команда Обновление из меню Запрос, после чего ACCESS добавляет в бланк запроса строку Обновление, которая предназначена для указания новых значений полей таблицы. После нажатия кнопки Запуск ACCESS укажет в специальном диалоговом окне, сколько записей изменится в таблице и потребует подтвердить изменения.
На рисунке 3.7 показан пример запроса на обновление таблицы “ТОВАРЫ”, заключающийся в том, что товарам со сроком годности до 01.01.99 ставится в соответствие отсутствие сертификата (значение поля – нет).
Рисунок 3.7 - Пример запроса на обновление таблицы