ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ и БАЗЫ ДАННЫХ

Коднянко В.А.

Лабораторные работы по СУБД Microsoft Access 2007

К содержанию


Лабораторная работа №3.
Сортировка и фильтрация данных

1. Сортировка данных

     Записи в таблице обычно отображаются в том порядке, в котором они были введены в базу данных. Однако часто возникает необходимость упорядочить (отсортировать) записи в таблице по значению определенного поля. Сортировка позволяет просматривать данные в удобном виде, а также быстро определять максимальные или минимальные значения какого-либо поля.

     Для сортировки по значению определенного поля достаточно установить в него курсор и нажать одну из двух кнопок в области Сортировка и фильтр вкладки Главная: По возрастанию или По убыванию . Команды для сортировки также находятся в контекстном меню столбцов таблицы.

     Для сортировки по нескольким полям следует последовательно выполнять команды сортировки для нужных полей в последовательности от внутреннего к внешнему (в обратном порядке). Например, чтобы отсортировать таблицу Кадры по фамилии, имени и отчеству, сначала следует выполнить команду сортировки для поля Отчество, затем – по полю Имя и, наконец, по полю Фамилия (рис. 10).

Рис. 10, а. Таблица до сортировки по
нескольким полям

Рис. 10, б. Таблица после сортировки по
полям Фамилия, Имя, Отчество

     Как видно на рис. 10, все фамилии после сортировки расположены в алфавитном порядке, при этом одинаковые фамилии (Марченко) расположились рядом. В свою очередь для одинаковых фамилий соответствующие имена также расположились в алфавитном порядке, при этом отсортированы в том же порядке отчества для одинаковых имен.

     Сортировка больших таблиц может занять продолжительное время. Сортировка по индексированным полям выполняется значительно быстрее.

     Отмена сортировки производится кнопкой .

2. Выражения

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

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

     В качестве составляющих выражения (его элементов) выступают имена объектов, функции, литералы, константы, арифметические операции, логические отношения и логические функции, а также двойные кавычки, квадратные и круглые скобки.

2.1. Операции и логические отношения

     Ниже в таблице 1 перечислены операции и логические отношения СУБД Access.

 

Таблица 1

Арифметические операции

* Умножение.пример: [Количество] * [Цена] даст значение стоимости товара по записям путем перемножения чисел, расположенных в полях Количество и Цена.
/ Деление
+ Сложение
- Вычитание
^ Возведение в степень

Логические отношения

= Равно
<> Не равно
> Больше
>= Больше или равно (не меньше)
< Меньше. Например, выражение [Цена]<100 истинно, если в поле Цена записи находится значение меньше 100.
<= Меньше или равно

Логические операции

Not Одноместная операция отрицания "НЕ". Используется для инвертирования значения логического выражения. Возвращает истинное значение, если условие ложно. Пример. NOT [Объем продаж] >=1000 истинно, если «объем продаж» меньше 1000.
And Двуместная операция логического умножения "И". Пример. [Город]=Красноярск AND [Индекс] = 660000 – истинно, если выражения слева и справа от операции истинны.
Or Используется для логического сложения (дизъюнкции) двух объектов и возвращает истинное значение, если хотя бы один из них имеет значение –Истина. Пример [Фамилия] = Бендер OR [Фамилия] = Безенчук – истинно, если в поле «Фамилия» находится одна из указанных фамилий
BETWEEN..AND Указывает принадлежность значения выражения заданному диапазону.
Пример. IF([Сумма займа] BETWEEN 100 AND 1000, «Немедленное погашение», «Погашение через 30 дней»

Результатом вычисления выражения будет стока «Немедленное погашение», если значение в поле [Сумма займа] находится100 и 1000 иначе результатом будет строка «Погашение через 30 дней»

IN Проверяет, совпадает ли значение выражения с одним из элементов указанного списка.
Пример. IF ([Должность] IN («Инженер», «Лаборант», «Менеджер»), «Пройти аттестацию», «Уволить».

Если в поле «Должность» содержится одно из значений «Инженер», «Лаборант» или «Менеджер», то функция  вернет значение – «Пройти аттестацию», в противном случае возвращается строка «Уволить».

IS Используется только с ключевым словом NuLL, для проверки является ли объект пустым.
Пример. IF([Фамилия] IS NuLL, “Введите фамилию”.

Строковая операция

& Конкатенация. Операция конкатенации позволяет объединять несколько текстовых объектов в одну строку. Например, [Фамилия]&[Имя]. Так, если в поле «Фамилия» записано значение «Бендер», а в поле «Имя» - «Остап», то выражение [Фамилия] & [Имя] даст строку «БендерОстап». Для того, чтобы между фамилией и именем появился пробел, выражение должно быть записано: [Фамилия]& “пробел“&{Имя].
Операция & позволяет вставлять в текстовую строку числа и даты. Например, “Отчет составил” & Now() &“ “ & [Бендер].
Результатом вычисления выражения будет строка: Отчет составил18.12.14 15:07:01 Бендер

2.2. Оператор Like

     Оператор Like сравнивает два строковых объекта с помощью шаблона (проверяет, соответствует ли один объект шаблону другого).Выражение имеет вид Like шаблон. Если выражение соответствует шаблону, то формула возвращает значение Истина. Оператор Like очень удобен для сравнения строк, при этом для большей гибкости в шаблонах могут использоваться символы подстановки.


     Символы подстановки оператора Like

Таблица 2
Символы

Соответствие

? Заменяет один символ
* Заменяет любое количество символов
# Заменяет любую цифру
[Список] Любой символ из списка
[!Список] Любой символ не из списка

     Примеры.

Выражение [Фамилия] Like “И[Вв]* истинно, если в поле «Фамилия» находится строка текста, которая начинается ИВ или Ив. Таким образом, строка «Иванов», «Иващенко» или «ИВЛЕВ» дает значение истина, а строка «Петров» или «Сидоров» – ложь.

Выражение АВ1998 Like AB#### – истинно, так как исходная строка начинается с символов «АВ», за которыми следуют любые четыре цифры.

Выражение 10-й пройденный круг” Like [#]*круг – истинно, так как первым символом строки является число, а в конце строки находится слово «круг».

2.3. Функции

     Access использует в своих объектах более сотни различных встроенных функций. Кроме того, используя язык Visual Basic, который поддерживается Access, как и другими приложениями. Вы можете создать свои собственные функции, называемые «Функциями Пользователя». Функции Access легко узнать, так как они всегда заканчиваются круглыми скобками. Большинство функций Access осуществляют некоторые вычисления, или выполняют преобразование данных. Для большинства из них должен быть задан Параметр (Аргумент). Параметр – это значение, которое необходимо подставить в функцию при вычислениях.

     Кратко рассмотрим наиболее часто употребляемые функции Access.

Таблица 3

Функции преобразования типа
Функция

Комментарий

Str()  Возвращает число в виде строки.
Пример. Str (1234,56) возвращает строку “1234,56”
Val() Выделяет число из строки.

Примеры. Val (“1234,56”) возвращает число 1234,56;
Val (“10Привет”) возвращает число 10

Format () Возвращает строку в формате, определенном Пользователем.
Пример. Format (“123456789”,”@@@-@@@-@@@”) возвращает строку 123-456-789;
Format (#01/31/03#) возвращает строку 31-Января-2003

 

Таблица 4

Функции даты и времени.
Функции этого типа используются для получения текущей даты и времени.
Функция

Комментарий

Now() Возвращает текущую дату и время. Функция не имеет параметров.
Пример. 31/01/03 22:34:34 PM
Time() Возвращает текущее время в 12 часовом формате
Пример. 22:34:34 PM
Day() Возвращает значение дня месяца в диапазоне от 1 до 31. Пример. Если вам необходимо отобрать записи исполнения заказов со значением поля большим, чем 10 число любого месяца то выражение, реализующее это условие будет иметь вид Day([ДатаИсполнения])>10.
Month() Возвращает значение месяца в диапазоне от 1 до 12.
Пример. Если вы хотите выбрать все записи для сотрудников, родившихся в мае месяце в строку «Условия отбора» введите выражение: (Month([ДатаРождения])=5).
Date() Возвращает текущую системную дату (дата, установленная на системных часах компьютера).
Пример. Если вы хотите отобрать все записи о заказах, сделанных за тридцать дней до сегодняшней даты, введите в строку «Условия отбора» этого поля выражение: Date()-30.


 

Таблица 5

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

Комментарий

Avg() Среднее значение выборки
Count() Количество элементов в выборке
Max() Максимальное значение
Min() Минимальное значение
Sum() Сумма чисел

 

Таблица 6

Строковые функции.
Строковые функции выполняют операции над текстовыми выражениями.
Функция

Комментарий

Right() Возвращает строку символов, которая расположена в исходной строке справа.
Пример. Right(“Привет”,2) возвращает строку «ет».
Len() Возвращает длину строки.
Пример. Len(“Привет”) возвращает число 6.
Lcase() Преобразует символы исходной строки в строчные.
Пример. Lcase(“КЛИЕНТ”) возвращает строку «клиент».

 

Таблица 7

Математические функции
Функция

Комментарий

Int() Определяет целую часть числа.
Пример. Int(12233,556) возвращает число 12233.
Fix() Корректно определяет целое значение для отрицательных чисел.
Пример. Fix(-12345,4321) возвращает число –12345.
Sqr() Вычисляет корень квадратный числа.
Пример. Sqr(4) возвращает число 2.

 

Таблица 8

 Специальные операторы идентификации
Функция

Комментарий

Оператор «!» (восклицательный знак) Оператор «!» является ключевым символом, который используется с различными зарезервированными словами, чаще всего объектами базы данных. Поставив после этого слова оператор «!», вы тем самым указываете, что следующее имя - это имя объекта на которое вы ссылаетесь.
Пример. Рассмотрим поле «Дата рождения», которое содержится в формах [Сотрудники] и [Данные о сотрудниках]. Если Вы хотите обратиться к полю «Дата рождения» в форме [Сотрудники], то используйте зарезервированное слово Forms вместе с восклицательным знаком: Forms![Сотрудники].

3. Фильтрация данных

     В Access предусмотрены следующие способы отбора записей с помощью фильтров:

- фильтр по выделенному фрагменту,

- обычный фильтр,

- расширенный фильтр.

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

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

3.1. Фильтр по выделенному фрагменту

     Поясним работу этого фильтра на примере таблицы Кадры (рис. 2):


Рис.2. Импортированная таблица Кадры
 

     Чтобы использовать фильтр по выделенному фрагменту, необходимо в режиме Таблицы щелкнуть на значении поля какой-нибудь записи (например, Татьяна в поле Имя) чтобы затем отфильтровать все записи, содержащие это значение в требуемом поле, затем выполнить команду Главная - Сортировка и фильтр - Выделение. При этом появится список вида . Далее нужно нажать на желаемое условие фильтра (например, Равно "Татьяна"). При этом будет произведена фильтрация таблицы и в результирующем наборе окажутся только те записи, для которых выполнено условие (в нашем случае все записи, где значениями поля Имя является слово "Татьяна").

     Эту же операцию можно выполнить использованием контекстного меню.

3.2. Обычный фильтр

     Процедура обычной фильтрации запускается нажатием кнопки Фильтр на закладке Главная. К примеру, если активной является таблица Кадры (рис. 2) и выделена какая-нибудь запись в поле Должность, то появится окно, которое показано на рис. 3:

Рис.3. Окно простого фильтра

:     Если теперь в этом списке оставить флажок на надписи Секретарь, то в отфильтрованной таблице будут отображены те сотрудники, которые занимают должность секретаря.

     Очистить фильтры можно повторным вызовом этого окна и установкой флажка на опции Выделить все с последующим нажатием на кнопку ОК.

3.3. Расширенный фильтр

     Продемонстрируем выполнение расширенного фильтра на примере таблицы Кадры. Добавим в таблицу несколько новых записей, как показано на рис. 4. 

Рис. 4. Таблица Кадры с добавленными записями

     Предположим, что необходимо отфильтровать в этой таблице записи
- всех инженеров и бухгалтеров,
- с зарплатой не менее 14000,
- дата рождения которых находится в диапазоне от 01.01.1971 до 31.12.1978.

     Процедура расширенной фильтрации запускается командой Главная - Сортировка и фильтр - Дополнительно - Расширенный фильтр. При этом откроется окно Конструктора расширенного фильтра со списком полей таблицы в верхней части и пустой таблицей в его нижней части. 

     Теперь последовательно при помощи мыши переместим поля, которые участвуют в фильтре, в нижнюю часть области Конструктора.

     Далее в строке условие отбора запишем требуемые выражения (см. п. 2) по каждому такому полю. Щелкнем правой клавишей мыши на заголовке окна Конструктора и сохраним фильтр под именем ФильтрКадры.

Рис.5. Окно Конструктора
расширенного фильтра

     Вновь щелкнем правой клавишей мыши на заголовке Конструктора ФильтрКадры и перейдем в режим таблицы. В результате будет выполнена требуемая расширенная фильтрация записей, результат которой показан на рис. 6.

Рис. 6. Результат расширенной фильтрации


 

Для возврата к головной странице
щелкните на этой надписи:

К содержанию