Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

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

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

Теперь рассмотрим, как сортировать записи по определенному полю.

Допустим, что вам надо отсортировать данные по полю Фамилия.

Сделать это можно с помощью индексных полей.

В любой базе данных существует понятие индексного поля. Мы пока создавали один индекс — главный, для поля счетчика. Это обязательный индекс и существует всегда, но можно создавать любое количество дополнительных индексов.

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

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

Наиболее вероятно, что поиск вначале будет происходить по фамилии. Поэтому в нашем проекте, в первую очередь, необходимо индексным сделать поле Фамилия.

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

  • Нет — поле не индексировано.

  • Да (допускаются совпадения) — поле индексировано и две записи могут иметь одно и то же значение. Это значит, что могут быть две записи, у которых в поле Фамилия указано, например. Значение Сидоров. Для нашего случая это идеальный вариант, потому что много людей могут иметь одну и ту же фамилию.

  • Да (совпадения не допускаются) — если выбран этот параметр, то в индексированном поле нельзя хранить одинаковое значение в разных записях. База данных будет сама следить за уникальность поля. Если выбрать этот параметр, то две записи в нашем справочнике не смогут иметь, например, значение Сидоров. Этот параметр очень удобен, когда Вам нужно, чтобы поле было действительно уникальным. Такое бывает в офисных приложениях, когда номер документа часто должен быть уникальным.

Давайте сделаем индексным поле Фамилия.

Аналогично индексными можно сделать и другие поля. У этих полей нужно выбрать в свойстве Индексированное поле параметр Да (допускаются совпадения).

Закроем базу данных и перейдем в Главную форму (MainForm) и доработаем ее, а именно в меню нашей формы добавим пункт Сортировка и два его подпункта По фамилии и По дате записи.

Для обработчика события подпункта меню По фамилии напишем следующий код:

DataModule1.SpisokTable.IridexFieldNames: = 'Фамилия';

Для обработчика события подпункта меню по Дате записи напишем следующий код:

DataModule1.SpisokTable.IndexFieldNames:= 'ДатаЗаписи';

В обоих случаях мы присваиваем свойству indexFieldNames таблицы SpisokTable значение поля, по которому нужно сортировать записи.

8.5. Поиск данных в базе

Наш проект может редактировать и сортировать записи, но пока не может находить записи, нужные для редактирования.

Для поиска нужных записей в технологии ADO есть ряд специальных методов.