Разработка и эксплуатация АИС: Методическое пособие для выполнения лабораторных работ № 9-15, страница 6

Для управления отображением результатов запроса создадим процедуру, в которой переназначим задаваемые по умолчанию свойства объектов-полей. Затем вызов этой процедуры нужно поместить в обработчик события onAfterOpen компонента Query1. Этот обработчик вызывается каждый раз после выполнения метода Open класса TQuery.

procedure TfrmRoomsView.ManageFields;

begin

query1.FieldByName('num').DisplayLabel:='Номер';

query1.FieldByName('num').DisplayWidth:=7;

query1.FieldByName('num').Alignment:=taCenter;

query1.FieldByName('tip_name').DisplayLabel:='Тип номера';

query1.FieldByName('tip_name').DisplayWidth:=12;

query1.FieldByName('price').DisplayLabel:='Цена';

query1.FieldByName('price').DisplayWidth:=8;

query1.FieldByName('fio').DisplayLabel:='Постоялец';

query1.FieldByName('fio').DisplayWidth:=30;

end;

procedure TfrmRoomsView.Query1AfterOpen(DataSet: TDataSet);

begin

ManageFields;

end;

Наконец, осталось только создать обработчики для кнопок “Найти” и “Очистить” панели поиска подходящих номеров по типу и стоимости.

procedure TfrmRoomsView.btnFindRoomsClick(Sender: TObject);

var

roomTypeExpr, sortField, showExpr: String;

begin

  if roomType.ItemIndex > 0 then

roomTypeExpr := ' AND (tip_name = ' + roomType.Text + ')';

 if roomPriceEnable.Checked then

query1.ParamByName('ROOM_PRICE').AsInteger:=StrToInt(roomPrice.Text);

if roomSort.ItemIndex = 1 then

sortField := 'fio;'

  else

sortField := 'tip_name;';

 case roomShow.ItemIndex of

0: showExpr := '';

1: showExpr := ' AND (fio IS NULL)';

2: showExpr := ' AND (fio IS NOT NULL)';

  end;

query1.Close;

query1.SQL.Text := sql_begin + showExpr + roomTypeExpr +

' ORDER BY ' + sortField;

query1.Open;

end;

procedure TfrmRoomsView.btnClearFindClick(Sender: TObject);

begin

query1.ParamByName('ROOM_PRICE').AsInteger := 10000;

SortRooms;

end;

Задания:

1)  Изучите пример выполнения задания.

2)  Добавьте к созданному ранее приложению новую форму, реализующую следующие возможности:

Вариант 1:  список заказов с возможностью фильтрации по периоду времени (все, за последний месяц, за последнюю неделю, сегодняшние) и сортировки по стоимости заказа, его давности или названию товара.

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

Вариант 3:  список работников с указанием имен руководителей и названия отдела, в котором работает тот или иной сотрудник с возможностью фильтрации по отделам, руководителям, возрасту и полу и сортировки по отделам, по руководителям, в алфавитном порядке по Ф.И.О., по возрасту.

Вариант 4:  список выданных на руки книг с указанием названия, автора и жанра книги, а также имени и адреса читателя и даты возврата книги с возможностью фильтрации по жанру книги, автору книги и дате возврата (уже наступила или еще не наступила) и сортировки по жанру, давности выдачи, названию книги, имени автора или читателя в алфавитном порядке.

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

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

Вариант 7:  список преподавателей с указанием должности, стажа и заработной платы (рассчитывается как оклад плюс надбавка за стаж) с возможностью фильтрации по должностям, стажу и уровню заработной платы и сортировки по фамилиям, должностям, стажу и заработной плате.