Сортировка и фильтрация данных

Операция сортировки данных используется всегда для удобства нахождения нужной информации. Когда на экране (или на бумаге) отображается таблица, гораздо легче найти нужную строку, если эти строки упорядочены. Вы привыкли к тому, что таб­личные данные упорядочены по алфавиту, по дате, по увеличению или уменьшению значений в столбцах, содержащих числа. Но в разных ситуациях мы хотели бы сор­тировать строки по разным признакам (столбцам таблицы). В идеале это должно выполняться легким движением руки. Именно так и позволяет делать Access. По умолчанию, когда таблица открывается в режиме Таблицы, она упорядочивается по значению ключевого поля. Если ключевое поле для таблицы не определено, записи выводятся в порядке их ввода в таблицу. Если нужно отсортировать записи по зна­чению другого поля, достаточно установить курсор на любую строку соответствую­щего столбца и нажать одну из кнопок на панели Сортировка и фильтр,которая располагается на вкладкеГлавная: Сортировка по возрастаниюили Сортировка по убыванию.

Другой способ выполнения этой операции: щелкнуть правой кнопкой мыши по любой строке нужного столбца и выбрать из контекстного меню соответствующую команду.

В СУБД Access предусмотрено несколько механизмов выборки необходимой информации из таблиц БД. Простейшим из них является фильтрация, направленная на отбор группы записей, удовлетворяющих некоторому условию.

В Microsoft Access существует несколько разновидностей фильтров.

Фильтр по выделенному фрагменту, обычный фильтр и поле Фильтр для(Filter For) являются очень простыми способами отбора записей, причем самым простым явля­ется фильтр по выделенному фрагменту — он позволяет найти все записи, содержа­щие определенное значение в выбранном поле. Обычный фильтр используется для отбора записей по значениям нескольких полей. Поле Фильтр для(Filter For) используется, если фокус ввода находится в поле таблицы и нужно ввести конкретное искомое значение или выражение, результат которого будет применяться в качестве условия отбора. Для создания сложных фильтров следует использовать окно расши­ренного фильтра.

Набор записей, которые были отобраны в процессе фильтрации, называется результатирующим набором.

Чтобы использовать фильтр по выделенному фрагменту, необходимо:

1. В поле объекта в режиме Таблицы найти значение, которое должны содержать записи, включаемые в результирующий набор при применении фильтра.

2. Выделить это значение и нажать кнопку Выделение на панели Сортировка и фильтри выбрать соответствующую команду.Фильтры сохраняются автоматически при сохранении таблицы или формы. Таким образом, при повторном открытии таблицы или формы можно снова применить сохраненный фильтр.

Чтобы отменить фильтр, необходимо отжать кнопку Применить фильтр на панели Сортировка и фильтр или воспользоваться командой контекстного меню – Снять фильтр с …

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

Чтобы использовать возможности поля Фильтр для, необходимо:

1. Открыть таблицу в режиме Таблицы.

2. Щелкнуть правой кнопкой мыши на поле, для которого нужно указать условие отбора, а затем ввести значение условия отбора в поле Текстовые фильтрыв контекстном меню.

Фильтр по сложному критерию. При фильтрации условия отбора записей могут включать логические операции И и ИЛИ. Для реализации операции ИЛИ необходимо произвести фильтрацию по первому значению, после чего нажать кнопку Дополнительно , затем Изменить фильтр на панели Сортировка и фильтр, что приведет к открытию окна диалога по настройке фильтра. Внизу окна находятся ярлыки вкладок. На первой из них уже указано в качестве отбора первое значение. Необходимо перейти на вкладку ИЛИ и, нажав кнопку раскрытия, выбрать следующее значение. Далее нажимается кнопка Применить фильтр .Очевидно, что можно выбрать несколько значений, связанных операцией ИЛИ.

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

 

Практическое задание:

В таблице СЛУЖАЩИЙ БД Фирмаосуществить следующие виды фильтрации:

выбор служащих одного отдела;

выбор служащих, название должности которых заканчивается на букву "т";

выбор служащих, фамилия которых начинается на букву "В";

выбор всех женатых служащих одного отдела;

выбор служащих по одной должности;

выбор служащих-женщин одного отдела.

выбор сотрудников по Отделу, Фамилии и Окладу, отсортированный по всем полям

 

Импорт данных

При формировании БД на базе СУБД Access трудоемкость данного процесса может быть уменьшена за счет импортирования части данных в таблицы из других программных приложений, где они уже оформлены в структурированном виде. Для примера рассмотрим импорт данных из электронной таблицы Excel.

Предварительное замечание:заголовок у импортируемой из Excel таблицы должен отсутствовать или состоять только из одной строки.

Импорт начинается выбором последовательности команд: необходимо перейти на вкладку Внешние данныеи на панелиИмпортвыбрать соответствующую команду.После чего необходимо будет указать путь к нужному файлу.

Это приведет к раскрытию следующего окна Импорт электронной таблицы, в котором отображается вид импортируемой таблицы. Затем, следуя указанием Мастера, производится импортирование электронной таблицы в базу данных.

Не следует в данном случае создавать ключ для импортируемой таблицы, т.е. целесообразно установить опцию Не создавать ключи нажать кнопку Далее.

Существует также возможность экспорта данных из СУБД Access в электронную таблицу Excel. Реализация данного процесса производится по следующей процедуре.

На вкладке Внешние данные необходимо перейти на панель Экспорт выбрать соответствующую команду.

Практическое задание:

Средствами Microsoft Excel создается таблица Товары из 10-ти записей, включающая поля Наименование товара, стоимость, дата поступления, срок годности.

Производится ее импортирование в базу данных Фирма.

Таблица СЛУЖАЩИЙ экспортируется в таблицу Excel.

Результат работы демонстрируется преподавателю.

 

Создание запросов

 

Таблицы только хранят данные, но необходимо иметь возможность выбрать заданные данные из нескольких таблиц. Именно для этого служат запросы на выборку.

В запросах на выборку данные могут: отбираться по многим критериям; сортироваться; с ними могут производиться вычислительные операции.

Запрос это временная таблица. Это значит, что данные в них не хранятся постоянно, а только временно вызываются из таблиц, по заранее заданному шаблону, в момент активизации запроса. Таким образом, в базе данных постоянно хранится только шаблоны вызова данных (временные таблицы удаляются после закрытия запроса), а сама информация не дублируется.

Запросы позволяют:

1. формировать сложные критерии для выбора записей из одной или нескольких таблиц;

2. указывать поля, которые должны быть отображены для выбранных записей;

3. редактировать группы записей, удовлетворяющих определенным критериям;

4. выполнять вычисления с использованием выбранных данных.

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

Для создания запроса необходимо:

1. Открыть свою базу данных

2. Перейти на вкладку Создание

3. На панели Другие нажать кнопку Конструктор запросов

(появится окно конструктора запроса с диалоговым окном добавления таблиц. Окно добавления таблиц можно вызвать командой Отобразить таблицу на панели Настройка запроса).

 

Рисунок 2.3 – конструктор построения запросов

 

4. Добавить в запрос необходимые таблицы

5. Убедиться, что между добавленными таблицами установлены связи.

6. После добавления таблиц нажать кнопку Закрытьв окнеДобавление таблицы.

7. Затем нужно указать, какие поля из базовых таблиц будут отображаться в запросе. Для этого, выделить нужное поле в таблице-источнике, подвести указатель мыши к выделенному полю, нажать на левую кнопку мыши и перетащить поле в нужное место бланка запроса.

8. Сохранение запроса для дальнейшего использования производится через контекстное меню. Для этого необходимо нажать правую клавишу мыши на вкладке запроса и выбрать пункт Сохранить. Далее СУБД запросит имя сохраняемого запроса. Целесообразно, чтобы оно имело смысловую нагрузку, что облегчит дальнейшее использование запроса.

 

Чтобы удалить базовую таблицу из запроса, необходимо выделить ее, щелкнув на любом месте в списке ее полей, и нажать клавишу Delete. Чтобы удалить поле из запроса, выделите нужный столбец в бланке запроса, а затем нажмите клавишу Delete.

Самое главное в запросе - возможность использования критериев выборки, которые вводятся в строку Условие отбора. Можно выделить следующие типы запросов на основе критериев выборки:

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

Данные запросы можно параметризовать, т.е. вводить условия отбора в виде параметра при каждом запуске запроса, что устраняет необходимость предварительно его модификации. Для параметризации необходимо в строке Условие отбора вместо самого условия ввести текст приглашения на его ввод по формату [<текст приглашения>].

При запуске параметризованного запроса появляется диалоговое окно (рис. 5.2), в котором пользователь должен ввести собственно условие отбора и нажать клавишу ОК.

Рисунок 2.4 – окно ввода параметров запроса

Выборка по строгому несовпадению. В этом случае в выборку отбираются все записи таблицы, кроме записей, содержащих значение, указанное в строке Условие отбора. Для реализации данного запроса перед значением вводится префикс Not или <>. Например, Not "МТФ" в поле Факультет запроса к таблице СТУДЕНТ приведет к выборке всех студентов вуза, кроме студентов МТФ.

Выборка по неточному совпадению. Для выборки записей в условиях неполноты знаний о требуемых значениях используется оператор Like <условие>. Само <условие> образуется следующими подстановочными символами:

· ? - любой один символ;

· * - любое количество символов (0 - ¥);

· # - любая одна цифра;

· [список_символов] - любой символ из списка;

· [!список_символов] - любой символ, не входящий в список;

В списке можно указывать сразу диапазон символов, Например, [Г-Л] или [г-лГ-Л].

Примеры использования оператора Likeв поле ФИО таблицы СТУДЕНТ:

Like?????????? - выбираются все студенты, ФИО которых содержит 10 символов;

Like"В?????????" - выбираются все студенты, ФИО которых содержит 10 символов и начинается на букву "В";

Like"В*" - выбираются все студенты, ФИО которых начинается на букву "В". Длина ФИО произвольная;

Like"[ВД]*" - выбираются все студенты, ФИО которых начинается на буквы "В" или "Д". Длина ФИО произвольная;

Like"[В-М]*" - выбираются все студенты, ФИО которых начинается на буквы от "В" до "М". Длина ФИО произвольная.

Выборка по диапазону. Для формирования данных условий выбора используются операторы сравнения >, >=, <, <= и <>. Операции сравнения могут связываться логическими операциями And(И) иOr(ИЛИ). Для этих же целей используется оператор диапазона Between<нижнее_значение>and <верхнее_значение>.Например, выбор книг стоимостью от 100 до 200 рублей может быть реализован через ввод в запросе условия в поле Стоимость в виде >=100 and <=200или Between 100 and 200.

Перечень значений в условии выборки можно задать и оператором In(значение, значение, ...). Например, выбор студентов факультетов МТФ или ФАПУ можно реализовать, указав в поле Факультет запроса условие In("МТФ", "ФАПУ"). Это же условие можно записать и через операцию ИЛИ: "МТФ" or"ФАПУ". Также можно указать одно название факультета в строке Условие отбора(см. рис. 2.3), а второе в следующей строке или. Число строк илине ограничено.

Для выбора записей с пустыми значениями в некотором поле надо в соответствующем поле бланка запроса указать оператор Is Null.Наоборот, записи с непустыми значениями в данном поле выбираются по оператору Is not Null.

В выражениях отбора также можно использовать знаки математических операций +, -, /, * и неограниченное число круглых скобок. Сложные выражения в условиях отбора могут формироваться с помощью соответствующего построителя, который вызывается кнопкой на панели Настройка запроса.

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

<Название_формируемого_поля>:<выражение>.

В <выражении> можно использовать знаки арифметических операций, круглые скобки и имена полей в []. Например, стоимость партии можно вычислить по выражению

Стоимость партии:[количество товара]*[стоимость единицы товара].

Если используется поле другой таблицы, то в префиксе через ! указывается имя данной таблицы. Например

Стоимость партии:[Товар]![количество товара]*[стоимость единицы товара].

8. Запрос с групповыми операциями. Рассмотренные запросы анализируют отдельные записи таблицы. Вместе с тем, СУБД Access позволяет находить интегральные показатели для групп записей в таблице. Каждая такая группа характеризуется одинаковым значением по какому-то полю, например, одинаковым названием факультета или семейным положением. Для перехода в данный режим запросов необходимо в панели инструментов нажать клавишу Итоги , что приведет к появлению в бланке запроса новой второй строки с одноименным названием. В ячейках данной строки указывается или режим группировки по некоторому полю (опция Группировка), или название групповой операции:

· Sum- сумма значений

· Avg- среднее значение по данному полю для всей группы;

· Count- число записей в данной группе;

· Max -максимальное значение поля в каждой группе;

· Min -минимальное значение поля в каждой группе;

· First -первое значение данного поля в каждой группе;

· Last -последнее значение данного поля в каждой группе и др.

Опции выбора вызываются нажатием кнопки раскрытия в требуемой ячейке.

При запуске запроса СУБД разбивает таблицу на группы, число которых равно числу существующих значений в группируемом поле, и реализует для каждой группы требуемую операцию, т.е. число строк в выборке равно числу групп.

 

Рассмотренные запросы не изменяют содержимое исходной таблицы. Для реализации подобных действий СУБД Access использует четыре следующих запроса:

9. Запрос-создание новой таблицы. Предназначен для сохранения результатов запроса в виде новой таблицы.

Исходно формируется обычный запрос на выборку необходимой информации из таблицы. После проверки результатов его выполнения производится возврат в режим конструктора запросов. Далее нужно перейти на панель Тип запроса и нажать клавишу Создание таблицы, после чего СУБД запрашивает её имя. Указывается имя создаваемой таблицы и нажимается кнопка ОК.Непосредственно запрос на создание запускается нажатием кнопки на панели Результаты

В окне ТаблицыБД появляется пиктограмма созданной таблицы.

10. Запрос-добавление выборки в другую таблицу. Выборку можно добавить к другой таблице, однотипной по структуре или с изменением структуры выборки.

Для этого необходимо сформировать обычный запрос и оценить результаты его выполнения.

Далее следует вернуться в режим конструктора запроса.

На панели Тип запросанажимается кнопка Добавление, после чего СУБД запрашивает имя таблицы, к которой будет добавлена выборка. Последний шаг - нажатие кнопкиОК.

Выборку можно добавлять и к таблицам других БД, что определяется установкой соответствующих переключателей в окне ввода имени целевой таблицы.

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

11. Запрос-удаление. С помощью запросов можно удалить часть или все записи из таблицы.

Для этого необходимо сформировать обычный запрос и оценить результаты его выполнения.

Далее следует вернуться в режим конструктора запроса.

На панели Тип запросанажимается кнопка Удаление, после чего в бланке запроса появляется новая третья строка с именем Удаление, куда можно вводить дополнительные условия на выборку удаляемых записей. Последний шаг - нажатие кнопкиОК.

12. Запрос-обновление. С помощью запросов можно обновлять в единой операции некоторые или все значения выбранных полей.

Для этого необходимо сформировать обычный запрос и оценить результаты его выполнения.

Далее следует вернуться в режим конструктора запроса.

На панели Тип запросанажимается кнопка Обновление, после чего в бланке запроса появляется новая третья строка с именем Обновление. В ней задаются новые значения полей таблицы, в том числе и вычисляемые выражения. Далее запрос запускается на выполнение кнопкой . СУБД указывает число модифицируемых записей и просит подтвердить изменения кнопкойОК. Пользователь на этом этапе еще может отказаться от модификации значений в таблице.

Практическое задание:

 

Для таблицы СЛУЖАЩИЙ БД Фирмасформировать, проверить корректность и сохранить следующие запросы:

Отображающий в выборке поля:

- Фамилия + Имя + Отчество;

- дату рождения;

- отдел;

- оклад.

Отсортировать запрос по составному полю.

Отображающий в выборке все поля таблицы для работников одного отдела. Сделать данный запрос параметризованным;

Отображающий в выборке поля:

- Фамилия;

- отдел;

- количество детей,

для семейных сотрудников, фамилии которых начинаются на буквы от "Г" до "Ш";

Отображающий в выборке поля:

- Фамилия + инициалы;

- должность;

- оклад,

для холостых сотрудников с окладом больше 1000 руб.

Рассчитывающий для каждого сотрудника налог в виде выражения

налог = (0.99*оклад - (количество_детей + 1) * 100) * 0.13

В выборке выводятся:

· отдел;

· фамилия;

· оклад;

· налог.

 

 

Практическое задание:

I. Для таблицы СЛУЖАЩИЙ БД Фирмасформировать, проверить корректность и сохранить следующие запросы:

Вычисляющий сумму окладов для каждого отдела.

Средний оклад по всей фирме;

II. Выбрать из таблицы СЛУЖАЩИЙ всех женщин и сохранить выборку в виде новой таблицы ЖЕНЩИНЫ. Таблица будет содержать такие же поля, как и таблица СЛУЖАЩИЙ;

III. Выбрать из таблицы СЛУЖАЩИЙ всех холостых мужчин и добавить выборку к таблице ЖЕНЩИНЫ;

IV. Удалить из таблицы ЖЕНЩИНЫ служащих одного определенного отдела;

V. Увеличить всем женщинам, имеющим детей, в таблице ЖЕНЩИНЫ оклад в 1.5 раза.