Subset

Материал из GedeminWiki
Перейти к: навигация, поиск

Бизнес-объект -- это по сути "навороченый" набор данных (data set), которые извлекаются из базы с помощью SQL запроса. В общем случае, в SQL запросе можно указать какие-угодно условия отбора записей, но, очевидно, что среди всех условий существует несколько, к которым разработчик обращается намного чаще, чем к остальным. Для облегчения труда разработчика были придуманы СабСеты (Subset), которые фактически являются именами некоторых условий, добавляемых в SQL запрос.

Основные сабсеты бизнес-объекта

Рассмотрим базовый класс TgdcBase. Функция класса GetSubSetList возвращает строку со всеми допустимыми сабсетами, перечисленными через точку с запятой.

class function TgdcBase.GetSubSetList: String;
begin
  Result := 'All;ByID;ByName;OnlySelected;';
end;

Как видно, на самом базовом уровне поддерживаются четыре сабсета с именами: All, ByID, ByName и OnlySelected. Рассмотрим их по-подробнее:

All
снимает все ограничения. В выборку попадут все записи, находящиеся в базе.
ByID
извлечение одной записи по заданному ИД. В запрос будет добавлено условие:
 WHERE
   ...
   z.id = :ID
   ...
 

После выбора данного сабсета следует присвоить значение параметру ID и открыть набор данных.

ByName
выбор записей из базы данных наименование которых совпадает с заданным параметром Name. Отбор производится по полю с именем, возвращаемым функцией GetListField.
OnlySelected
в результирующую выборку попадут только те записи, идентификаторы которых содержатся в свойстве SelectedID бизнес-объекта.


Методы и свойства бизнес-объекта для работы с сабсетами

Следующие методы и свойства бизнес-объекта предназначены для работы с сабсетами:

SubSetCount
property SubSetCount: Integer read GetSubSetCount;
SubSets
property SubSets[Index: Integer]: TgdcSubSet read GetSubSets write SetSubSets;
HasSubSet
function HasSubSet(const ASubSet: TgdcSubSet): Boolean;
DeleteSubSet
procedure DeleteSubSet(const Index: Integer);
RemoveSubSet
procedure RemoveSubSet(const ASubSet: TgdcSubSet);
AddSubSet
procedure AddSubSet(const ASubSet: TgdcSubSet);
ClearSubSets
procedure ClearSubSets;
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты