БД: P8PDataGrid - встроена уникальность в алгоритм добавления групп для строк данных

This commit is contained in:
Mikhail Chechnev 2024-02-05 15:59:02 +03:00
parent de9248b8fc
commit 1f89838f16

View File

@ -951,17 +951,35 @@ text="Формат data_grid и gant как в chart"
BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением)
) )
is is
BFND boolean := false; -- Флаг наличия группы в коллекции
begin begin
/* Инициализируем коллекцию если необходимо */ /* Инициализируем коллекцию если необходимо */
if ((RGROUPS is null) or (BCLEAR)) then if ((RGROUPS is null) or (BCLEAR)) then
RGROUPS := TGROUPS(); RGROUPS := TGROUPS();
end if; end if;
/* Добавляем элемент */ /* Проверим наличие */
RGROUPS.EXTEND(); if (RGROUPS.COUNT > 0) then
RGROUPS(RGROUPS.LAST) := TGROUP_MAKE(SNAME => SNAME, for I in RGROUPS.FIRST .. RGROUPS.LAST
SCAPTION => SCAPTION, loop
BEXPANDABLE => BEXPANDABLE, if (RGROUPS(I).SNAME = SNAME) then
BEXPANDED => BEXPANDED); /* Элемент найден - обновим */
BFND := true;
RGROUPS(I) := TGROUP_MAKE(SNAME => SNAME,
SCAPTION => SCAPTION,
BEXPANDABLE => BEXPANDABLE,
BEXPANDED => BEXPANDED);
exit;
end if;
end loop;
end if;
/* Добавляем элемент если такого нет */
if (not BFND) then
RGROUPS.EXTEND();
RGROUPS(RGROUPS.LAST) := TGROUP_MAKE(SNAME => SNAME,
SCAPTION => SCAPTION,
BEXPANDABLE => BEXPANDABLE,
BEXPANDED => BEXPANDED);
end if;
end TGROUPS_ADD; end TGROUPS_ADD;
/* Сериализация описания групп таблицы данных */ /* Сериализация описания групп таблицы данных */