Subset
Бизнес-объект -- это по сути "навороченый" набор данных (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;