
- •Раздел 1. Проектирование баз данных. 2
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi. 25
- •Раздел 1. Проектирование баз данных.
- •1.1. Основы построения баз данных. Модели данных.
- •1.1.1. Реляционная модель данных.
- •1.1.2. Нормализация базы данных.
- •1.2. Проектирование базы данных методом “сущность-связь”.
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi.
- •2.1. Технология создания информационной системы.
- •2.1.1.Создание таблиц базы данных в Database Desktop.
- •2.1.2. Целостность базы данных.
- •Программа bde Administrator и модули данных.
- •Компоненты доступа и работы с данными. Тема: Наборы данных. Состояние и режимы наборов данных.
- •Тема: Объекты поля. Операции с полями.
- •Тема. Отображение и выбор значения поля.
- •Тема. Визуальные компоненты отображения записей из набора данных.
- •Закладки.
- •Тема. Ограничения на вводимые значения.
- •Тема. Сортировка набора данных.
- •Тема. Операции с таблицей базы данных.
- •Тема. Фильтрация записей.
- •Тема. Поиск записей.
- •Тема. Модификация набора данных.
- •Тема. Работа с отчетами
- •Отчет для связанных наборов данных
- •Составной отчет
- •Модули данных
- •Конструктор отчетов Rave Report
- •Реляционный способ доступа к данным.
- •Основные сведения о языке sql.
- •Оператор выбора Select.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Тема. Сортировка набора данных.
Таблицы Paradox по умолчанию сортируются по ключам (первичный индекс). Сортировка набора данных для компонента Table выполняется автоматически по текущему индексу. При смене индекса автоматически происходит сортировка записей в соответствии с новым индексом. Для сортировки записей по нескольким полям нужно создать индекс, включающий эти поля. То есть, сортировка записей по набору данных Table возможна только по полям, для которых задан индекс.
Свойства компонента Table:
IndexName: String – определяет вторичный индекс таблицы. Если значение пусто, то порядок сортировки записей основывается на индексе, используемом по умолчанию. Обычно используется, если сортировка выполняется по одному полю.
Например,
TbTovar.IndexName:=’ind_tovar’;
IndexFieldNames:String – содержит список столбцов, которые используются как индексы таблицы и служат для упорядочения значений в указанных столбцах. Имена полей в списке перечисляются через точку с запятой. Для таблиц Paradox имена указываемых полей должны быть проиндексированы.
Например,
TbTovar.IndexFieldNames:='T_Nazv;T_Cena';
Здесь сортировка выполняется по названию и цене товара, индекс ind_TovarCena.
Свойства IndexName и IndexFieldNames являются взаимоисключающими, то есть определение одного свойства очищает значение другого.
IndexFieldCount: Integer – (только для чтения) указывает количество полей, которые образуют текущий индекс. Если индекс построен для одного поля, то значение равно 1.
IndexDefs: TIndexDefs; - содержит информацию об установленных для таблицы индексах.
свойство Count:Integer – указывает количество индексов;
свойство Items:Strings – содержит список индексов;
метод Update выполняет обновление определений индекса в свойстве Items.
Пример. Выполнение сортировки по индексу ind_TovarCena
procedure TForm1.BtnSortClick(Sender: TObject);
var i: integer;
begin
TbTovar.Active:=False; // закрытие набора данных
// доступ в исключительном режиме
TbTovar.Exclusive:=True;
// получение доступных индексов
TbTovar.IndexDefs.Update;
// поиск составного индекса на базе полей T_Nazv и T_Cena
for i:=0 to TbTovar.IndexDefs.Count-1 do
if TbTovar.IndexDefs.Items[i].Fields='T_Nazv;T_Cena' then
// Установка найденного индекса как текущего
TbTovar.IndexName:=TbTovar.IndexDefs.Items[i].Name;
TbTovar.Exclusive:=False;
TbTovar.Active:=True;
end;
С
войства
индексов доступны для редактирования
при выборе индекса в окне Editing
Table1.IndexDefs,
которое появляется при выборе свойства
IndexDefs компонента
Table.
Направление сортировки можно задать для поля с помощью значения свойства Options: ixDescending=true – сортировка по убыванию значений, = false –по возрастанию значений.
Например, выполнение сортировки значений полей с использованием компонента RadioGroup.
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0 : if RadioGroup2.ItemIndex=0
then TbTovar.IndexFieldNames:='T_Nazv'
else TbTovar.IndexName:='ind_tovar_des';
1 : if RadioGroup2.ItemIndex=0
then TbTovar.IndexFieldNames:='T_Cena'
else TbTovar.IndexName:='ind_cena_des';
else TbTovar.IndexName:='';
end;