Indexing-bd-delphiВсем привет дорогие друзья! Сегодня наша статья будет посвящена обратно работе с файловой базой данных в Delphi. Нам осталось рассмотреть совсем немного тем, и мы закончим с данной серией. В прошлой статье по работе с файловой БД, мы рассмотрели основные методы по работе с набором данных.

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

В TClientDataSet индекса можно создать несколькими способами. Первый способ – это способ, при помощи свойства IndexDef. Вам необходимо открыть редактор данного свойства и добавить в него новый индекс (как-нибудь его обозвать). Я назвал его iName.

file-bd-delphi

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

ixPrimary Первичный ключ таблицы
ixUnique Уникальный индекс, который не допускает повторений в таблице, в поле, к которому он подключен. Если у Вас есть уже ни уникальные записи, то при задании данного типа индекса, у Вас будет ошибка в приложении
ixDescending Индекс, который применяется для обратной сортировки, то есть для убывания значений
ixExpression Индекс, который основан на ключевом выражении и применяется только лишь для таблиц dBase
ixCaseInsensitive Индекс, который не чувствительный к регистру символов
ixNonMaintained Индекс, который не будет обновляться после редактирования нашей таблицы

Вы выбираете тип индекса, который Вам необходим и больше всего подходит к Вашей таблице. Почти что мы закончили с этим. Нам осталось лишь подключить индекс к нашему проекту. Это сделать мы можем двумя способами. Для этого мы выделяем компонент TClientDataSet и находим там свойство IndexName. В данном свойстве, из выпадающего списка, необходимо выбрать имя индекса, который мы создавали, способом выше.

Второй способ – выделяем также компонент TClientDataSet и находим там свойство IndexFieldsName, которое имеет тип WideString. В нем Вы можете напрямую указать поля, которые будут индексами, также можете указывать их через точку с запятую.

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

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

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

Индекс также можно создать и при помощи процедуры:

procedure AddIndex(const Name: string; const Fields: string; Options: TIndexOptions; const DescFields: string = »; const CaseInsFields: string = »; const GroupingLevel: Integer = 0);

В данной процедуре Вы уже знакомы с частью параметров, например:

  • Name – имя индекса
  • Fields – список полей, которые относятся к индексу
  • Options – настройки индекса, тип индекса
  • DescFields – список полей индекса, которые будут учитываться при сортировке в обратном направлении
  • CaseInsFields – список полей индекса, которые не будут учитывать регистр символов
  • GroupingLevel – это уровень группировки, который может группировать данные, наподобие SQL-запроса с директивой GROUP BY. Если данный параметр равен 0, то группировка отключена, если равен 1, то это означает, что в процессе группировки будет использоваться только первое поле в индексе, если равен 2, то первое и второе поле, ну и так далее

Хочется сказать, что метод AddIndex будет использоваться только для активного набора данных, то есть, который открыт в данный момент времени. И индекс, который создан данным методом будет существовать только во время работы программы, по ее завершению он исчезнет.

Вы также можете удалить индекс с помощью процедуры:

procedure DeleteIndex(const Name: string);

Вам, чтобы удалить индекс, достаточно знать только лишь его имя.

Вот и все с данной темой. Как видите, ничего сложного в этом нет, проект я приложу, Вы можете скачать его по данной ссылке, и не забудьте прочитать предыдущие статьи по работе с файловыми базами данных в Delphi:

Метки: , , ,




К записи “Работа с файловыми базами данных в Delphi. Часть 4” оставлено комментариев: 4.

  1. KDP:

    Он — индекс.
    Они — Индексы, а не индексА.

    Если не хватает мозга выучить родной язык, может быть, освоить хотя бы использование спелл-чекера ?

    • Andrey:

      Я смотрю у Вас хватает мозга всех упрекать, кто сказал что русский язык — мой родной? Может этой мой авторский стиль, а кто хочет, тот поправит и подскажет!

  2. Владимир:

    А как Вам метод создания файловой «базы» на основе RECORD-структуры и написания её обработки на 100% самому? Или в наше время считаете это сильно долго и не рационально? ;)

  3. samsim:

    Эта технология уже слишком примитивна и ее не эффективно использовать.

Оставить комментарий

Вы можете использовать следующие теги:

*