Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция спбд.docx
Скачиваний:
59
Добавлен:
14.09.2019
Размер:
223.04 Кб
Скачать

Лекция 7 30.03.12 Сортировка набора данных в компоненте ibTable

Сортировка наборов данных в IBTable происходит автоматически по индексному полю. При смене индекса происходит автоматическое переупорядочивание записей.

Пример сортировки с указанием имен индексов:

IBTable1->Active=false;

IBTable1->IndexFieldNames=”Name.gr”;

IBTable->Active=true;

Пример сортировки при щелчке на заголовке столбца:

IBTable1->Active=false;

IBTable1->IndexFieldNames = Column->FieldName;

IBTable->Active=true;

//DBGridTitleClick

Аргумент column является указателем на тот столбец, заголовок которого был отмечен щелчком.

Сортировка набора данных ibQuery

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

Пример:

  1. На форму поместим компонент IBQuery и настроим свойство DatabaseName (IBDatabase1);

  2. В свойство SQL поместим необходимый SQL код;

  3. В компоненте DataSource в свойстве Dataset установим значение IBQuery1;

  4. В компоненте DBGrid в свойстве Datasource установим значение.

IBQuery1->Active = false;

IBQuery1->SQL->Clean();

IBQuery1->SQL->Add(“SELECT …”);

IBQuery1->SQL->Add(“ORDER BY”+Column->FieldName);

IBQuery1->Active=true;

Фильтрация наборов данных

Фильтрацию данных можно рассматривать в трех аспектах:

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

  2. Горизонтальная фильтрация набора данных, когда в компоненты визуализации передается только часть записей наборов данных со всеми полями;

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

Фильтрация запиcей одной таблицы

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

Для активации и деактивации применяется свойство Filtered компонента Table.

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

Пример:

Фильтрация при помощи поля ввода

IBTable1->filtered = false;

IBTable1->Filter = “Nameg_gr” + Edit->Text;

IBTable1->Filtered = true;

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

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

  1. Помещаем на форму первый компонент IBTable, настраиваем его свойства DatabaseName и TableName;

  2. Помещаем на форму первый Datasource, в свойстве Dataset устанавливаем значение Table1;

  3. Помещаем на форму первый DBGrid, и свойству Datasource установим значение Datasource1;

  4. Помещаем на форму второй компонент IBTable, настраиваем его свойства DatabaseName и TableName;

  5. Помещаем на форму второй Datasource, в свойстве Dataset устанавливаем значение Table2;

  6. Помещаем на форму первый DBGrid, и свойству Datasource установим значение Datasource2;

  7. В подчиненной таблице Table1 свойству Mastersource установим значение Datasource2, установив связь между таблицами;

  8. Для того, тчобы установить связь по внешнему ключу нужно дать правильное значение полю MasterFields, которое определяет поля внешнего ключа;