Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 07 сен 2024, 17:16

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 21 июн 2024, 08:35 
Не в сети

Зарегистрирован: 21 июн 2024, 08:28
Сообщений: 3
Здравствуйте.

Подскажите пожалуйста как организовать разноуровневую группировку записей в DBGridEh. Нужно чтобы часть записей не была сгруппирована, часть попала на первый уровень группировки, часть на второй уровень группировки. Сейчас они все имеют второй уровень группировки, даже если в поле столбца группировки нет значения. Столбцы группировки имеют строковый тип.

Спасибо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 июл 2024, 17:50 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1580
Добрый день.

Группировка в DBGridEh строится на основе значений полей DataSet’а.
Если в DataSet’е нет поля значение которого однозначно определяет группу, то необходимо такое поле создать и заполнить. Либо использовать калькулируемые поля.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 июл 2024, 06:55 
Не в сети

Зарегистрирован: 21 июн 2024, 08:28
Сообщений: 3
Это как раз понятно. Вопрос не как создать группировку, а как управлять уровнем группировки. Что нужно сделать с полем записи в датасете по которому идет группировка, что бы она не попала в группу вообще. Датасет TMemTableEh. Может управлять нужно через древо группировки в DBGridEh. Вопрос состоит в том, как то можно этим управлять и если можно то как?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 июл 2024, 18:54 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1580
Добрый день.

В режиме группировки каждая запись попадет в какую-либо группу на каждом уровне группировки.

Если поле, по которому идет группировка, не будет содержать значение, то будет создана группа с пустым значением, и в эту группу будет добавлена запись.

Если вы хотите создать структуру, в которой группы должны быть созданы для определенного набора записей, то вам необходимо это реализовывать через свойства построения древовидной структуры в TMemTableEh.TreeList.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 июл 2024, 14:44 
Не в сети

Зарегистрирован: 21 июн 2024, 08:28
Сообщений: 3
Здравствуйте.

Прошу прощения за то что не могу свой вопрос объяснить достаточно доступно. Попробую еще раз другими словами. Дата сет (MemTableEh) не находится в режиме дерева MemTableEh.TreeList.Active := False; Чтение уровней в древе TreeNodeLevel у записей всегда дает 0;
Включена группировка именно в гриде (DBGridEh). DBGridEh.DataGrouping.Active := True; Группируются записи по двум колонкам:
DBGridEh.DataGrouping.GroupLevels.Add.Column := DBGridEh.FieldColumns['Group_level_1'];
DBGridEh.DataGrouping.GroupLevels.Add.Column := DBGridEh.FieldColumns['Group_level_2'];

Грид группирует все записи на второй уровень, так как в датасете эти поля есть у всех записей. Вопрос как часть записей оставить не сгруппированными, а часть сделать сгруппированными только по первой колонке?

У грида есть древовидная структура DBGridEh.DataGrouping.GroupDataTree отражающая структуру группировки, по ней можно посмотреть на какой уровень сгруппирована конкретная запись, открыть или закрыть соответствующую группу. Однако как управлять этой структурой совершенно не ясно и документации по этому вопросу нет. Большинство её свойств доступно только для чтения.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 июл 2024, 08:16 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1580
Добрый день.

В режиме группировки через DBGridEh.DataGrouping вы не можете указать определенной записи, должна ли она попадать в группировку или нет.
Каждая запись автоматически попадет в определенную группу в зависимости от значения в колонке указанной в GroupName.ColumnName.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB