o FieldList: TFieldList – список объектов-полей, принадлежащих набору данных, представляет собой объект класса TFieldList;
o FieldValues[const FieldName: string]: Variant – позволяет получить доступ к значениям поля, имя которого указано в индексной константе FieldName.
Класс TFields, инкапсулирующий коллекцию объектов-полей набора данных, имеет следующие свойства и методы:
o Count: Integer – количество объектов-полей в коллекции;
o Fields[Index: Integer]: TField – индексированный массив объектов-полей, содержащихся в коллекции.
o FieldByName(const FieldName: String): TField – возвращает объект-поле с заданным именем;
o FieldByNumber(FieldNo: Integer): TField – возвращает объект-поле с заданным порядковым номером;
o FindField(const FieldName: String): TField – возвращает обект-поле с заданным именем или NIL, если такого поля не существует в активном наборе данных;
o GetFieldNames(List: TStrings) – возвращает список имен имеющихся в коллекции объектов-полей в переданный в качестве параметра компонент класса TStrings;
o Add(Field: TField) – добавляет существующий объект-поле к коллекции;
o Remove(Field: TField) – удаляет существующий объект-поле из коллекции и освобождает выделенную под него памыть.
Для того, чтобы манипулировать объектами-полями во время выполнения приложения, необходимо знать свойства и методы класса TFiled:
o Alignment: TAlignment – выравнивание текста ячейки при отображении, возможные значения:
- taLeftJustify – по левому краю;
- taCenter – по центру;
- taRightJustify – по правому краю;
o CanModify: Boolean – определяет, можно ли редактировать значения поля в сетке TDBGrid;
o DisplayLabel: String – заголовок колонки сетки TDBGrid, соответствующей данному полю;
o DisplayWidth: Integer – размер колонки сетки TDBGrid, соответствующей данному полю;
o FieldName: String – имя поля реальной БД (имя, которое было присвоено поля в SQL запросе);
o IsNull: Boolean – показывает, что содержимым поля является значение NULL;
o ReadOnly: Boolean – устанавливает режим “только чтение” для поля;
o Visible: Boolean – управляет отображением поля в сетке TDBGrid.
Для иллюстрации возможностей манипулирования объектами-параметрами и объектами-полями компонента TQuery добавим в программу возможность производить поиск свободного номера с нужной стоимостью и сортировать номера по типу и по признаку занятости.
Внешний вид приложения можно увидеть на рисунке ниже:
Т.к. в программе часто будет встречаться одна и та же часть SQL запроса, имеет смысл вынести ее в глобальную константу:
Const
Sql_begin = ‘SELECT num, types.tip_name, price, fio
FROM (rooms LEFT JOIN clients ON (client = clients.id))
INNER JOIN types ON (types.tip = rooms.tip)
WHERE (price < :ROOM_PRICE)’;
Для возможности сортировки результатов запроса по выбранному пользователем критерию и отображения только нужных комнат (всех, либо только свободных, либо только занятых) создадим процедуру, анализирующую состояние флажков групп “Сортировать по:” и “Отображать:” и перестраивающую SQL запрос в зависимости от их состояния:
procedure TfrmRoomsView.SortRooms;
var
sortField : String;
showExpr : String;
begin
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 + ‘ ORDER BY ’ + sortField;
query1.Open;
end;
После создания процедура ее нужно прописать в обработчики выбора нового пункта в группах “Сортировать по:” и “Отображать:”
procedure TfrmRoomsView.roomSortClick(Sender: TObject);
begin
SortRooms;
end;
procedure TfrmRoomsView.roomShowClick(Sender: TObject);
begin
SortRooms;
end;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.