Иногда требуется отсортировать данные не по алфавиту или числовой последовательности, а по пользовательскому порядку (также называемому пользовательским или логическим порядком). Например, сортировка рабочих дней таким образом, чтобы понедельник появился первым, имеет больше смысла, чем сортировка в алфавитном порядке, где пятница отображается первой. Данные можно сортировать в представлении таблицы или запроса или в представлении Форма формы.
В этой статье
Сортировка небольшого, конечного числа уникальных значений полей
В этой процедуре вы напишете выражение, которое использует функцию IIf для ранжирования должностей сотрудников.
Сначала создайте таблицу, содержащую три поля: Title, FirstName и LastName. В поле Заголовок введите следующие значения для четырех новых записей:
-
Внутри координатора продаж
-
Менеджер по продажам
-
Торговый представитель
-
Вице-президент по продажам
В полях FirstName и LastName четырех записей введите любые нужные имена.
-
Теперь откройте таблицу в режиме таблицы.
-
На вкладке Главная в группе Сортировка и фильтр нажмите кнопку Дополнительно, а затем в контекстном меню выберите команду Расширенный фильтр.
-
Добавьте в сетку нужные поля, например FirstName, LastName и Title.
-
Щелкните правой кнопкой мыши строку Поле в первом пустом столбце, выберите пункт Масштаб и введите следующее выражение:
IIf ([Title] = "Вице-президент, продажи", 1, IIf ([Title] = "Sales Manager", 2, IIf ([Title] = "Sales Representative", 3, IIf ([Title] = "Inside Sales Coordinator", 4, 5))))
Заголовок — это имя поля, содержащего ранжированные значения. Значения, заключенные в кавычки, являются отдельными значениями, хранящимися в поле . Числовое значение, которое следует за ним, — это присвоенный ему ранг. Предыдущее выражение присваивает ранги с 1 по 4 четырем различным названиям, а ранг 5 присваивается всем остальным. При выполнении сортировки заголовкам, не упомянутым в этом выражении, присваивается один и тот же ранг (5).
-
В строке Сортировка столбца, содержащего выражение, щелкните По возрастанию.
-
на вкладке Главная в группе Сортировка и фильтр нажмите кнопку Переключить фильтр.
Функция IIf возвращает числовое значение, соответствующее значению в поле Title. Например, если значение в поле Заголовок — Sales Manager, то назначенный номер — 2. Если в поле Title есть значение, не указанное в качестве аргумента в функции (например, Региональный координатор), ему назначается число 5. Затем запрос сортирует эти числа по возрастанию.
Сортировка большого количества уникальных значений полей
Если имеется большое количество значений для ранжирования, лучший способ сортировки данных — создать таблицу подстановки.
Предположим, что в таблице Employees содержится более 50 различных названий. Сначала необходимо создать таблицу подстановки и подготовить существующую таблицу для поиска новой таблицы. Затем вы связываете две таблицы и создаете запрос.
Создание таблицы подстановки и изменение существующей таблицы
-
Создайте таблицу подстановки, в которую будут храниться заголовки. Присвойте табличным таблицам имя tblTitles и задайте для полей типы данных, указанные в скобках, как показано в следующей таблице:
TitleID
(AutoNumber)Титул
(Текст)1
Вице-президент по продажам
2
Менеджер по продажам
3
Торговый представитель
4
Внутри координатора продаж
-
Задайте поле TitleID в качестве первичного ключа.
-
Измените таблицу Employee так, чтобы она просматривала таблицу tblTitles.
-
В режиме конструктора измените имя поля Title на TitleID.
-
В столбце Тип данных измените тип данных на Число.
-
-
На вкладке Общие в разделе Свойства поля измените значение Размер поля на Длинное целое число.
-
Сохраните таблицу и игнорируйте предупреждение об потере данных.
-
Переключитесь в режим таблицы.
-
Заполните столбец Заголовки значением TitleID, соответствующим значению заголовка.
Например, для записей, где значение Title — Sales Manager, введите 2. В поле Sales Representative (Торговый представитель) введите 3.
-
Сохраните и закройте таблицу.
Связывание двух таблиц
-
На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
-
На вкладке Конструктор в группе Связи щелкните Добавить таблицы (или Показать таблицы в Access).
-
Выберите tblTitles и Employees и нажмите кнопку Добавить , чтобы добавить их в окно Связи. Закройте диалоговое окно Добавление таблицы.
-
Перетащите поле TitleID из таблицы tblTitles в поле TitleID в таблице Employees.
Откроется диалоговое окно Изменение связей .
-
Убедитесь, что имена полей, отображаемые в двух столбцах, являются TitleID, а также что в поле Тип связиотображается значение "Один ко многим". При необходимости можно изменить имена полей.
-
Установите флажок Обеспечение целостности данных.
-
Нажмите кнопку Создать для создания связи.
Диалоговое окно Изменение связей закрывается и сохраняет изменения.
-
Закройте вкладку Связи .
Создание запроса
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
В диалоговом окне Добавление таблиц (показать таблицу в Access) откройте вкладку Таблицы , дважды щелкните элемент Сотрудники, а затем дважды щелкните tblTitles.
-
Добавьте поля EmployeeID, LastName и FirstName из таблицы Employees и Title из таблицы tblTitles в сетку конструктора запроса.
-
Переключитесь в режим таблицы.