Предки: TssRootComplexDataStorage
-> TssDataStorage
.
Класс расширяет функциональность TssDataStorage
, позволяя сохранять дополнительно:
Разбивку записей на группы;
Результат агрегатных функций по каждой группе;
Результат агрегатных функций в целом по всем записям;
При построении записей в виде дерева – информацию об узле дерева, для каждой записи.
Информацию об изменении для каждой записи.
При разбивке на группы данные на основе значений указанного поля (полей) разбиваются на группы (поддерживается многоуровневая группировка). При этом записи упорядочиваются согласно их принадлежности к группам. При построении записей в дерево записи упорядочиваются в порядке прямого обхода дерева.
Некоторые свойства TssComplexDataStorage
:
Свойство | Тип | Описание |
---|---|---|
GroupKind[] | TssGroupKind | Тип записи (см. ниже) |
GroupLevel[] | Integer | Уровень группировки записи |
RecordStatus[] | TssRecordStatus | Информация об изменении записи |
NodeStatus[] | TssNodeStatus | Признак узла дерева – открыт/закрыт |
TreeChildCount[] | Integer | Признак узла дерева – количество непосредственных подчиненных записей |
TreeIsLastChild[] | Boolean | Признак, что это последняя подчиненная запись внутри текущего узла |
TreeLevel[] | Integer | Уровень вложенности в дерево для данной записи |
TreeParentRecNo[] | Integer | Номер родительской записи |
TreeCycled[] | Boolean | Признак, что для данной записи обнаружено зацикливание в дереве |
TreeBroken[] | Boolean | Признак, что для данной записи должна быть родительская запись, но она не найдена по значению внешнего ключа. |
HaveTreeCycles | Boolean | Признак наличия зацикленных записей |
HaveTreeBreaks | Boolean | Признак наличия записей с ненайденными родительскими записями. |
HaveGroups | Boolean | Данные формировались с группами |
HaveTree | Boolean | Данные формировались в виде дерева |
MaxGroupLevel | Integer | Количество уровней групп |
При разбивке на группы и/или при наличии агрегатных функций в целом по всем записям, в TssComplexDataStorage
помимо записей с данными присутствуют служебные записи, разбивающие данные на группы и, если указано, содержащие результаты агрегатных функций. Тип каждой записи указан в свойстве GroupKind[]
. Варианты значений:
gkSimpleRecord
– запись с данными.
gkComputeByHeader
– заголовок группы или всех данных.
gkComputeByFooter
– подвал группы или всех данных.
Общая схема группировки записей (если есть группировка уровня n):
Level | Kind | Comment |
---|---|---|
0 | Header | Заголовок для total group , если есть total funcs |
1..n | Header | Заголовки групп от 1-го до n-го уровня |
0 | Regular | Обычные записи, будут обязательно (так как от них формируется заголовок и подвал группы) |
n..k | Footer | Подвалы групп от n-го до k-го уровня (1<=k<=n), если есть функции для подвала (то есть подвалы не обязательны) |
k..n | Header | Заголовки групп от k-го до n-го уровня |
0 | Regular | Обычные записи, будут обязательно (так как от них формируется заголовок и подвал группы) |
n..k | Footer | Подвалы групп от n-го до k-го уровня (1<=k<=n), если есть функции для подвала (то есть подвалы не обязательны) |
... | ||
0 | Footer | Подвал для total group , если есть total funcs |