Показать сообщение отдельно
  #1  
Старый 17.02.2019, 14:16
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Хитрое соединение данных двух таблиц

Приветствую вас, форумчане!
В процессе разработки очередной БД у меня возник вопрос, для меня как для новичка достаточно сложный, на уровне нерешаемого. Речь идёт об одной возможности, которую очень хотелось бы реализовать, и состоит она в "хитром" соединении данных двух таблиц, находящихся в отношении "Мастер-Деталь".

Есть главная таблица "Компоненты". К ней как детальная подключена таблица "Параметры" (т.е. каждому компоненту может соответствовать произвольный список параметров и конкретных значений этих параметров). Для пущей ясности, как это выглядит, скрины прилагаются.

И вот вопрос - как бы сделать так, чтоб в одном гриде отобразить объединённые данные из этих двух таблиц. А именно: в новом "суммирующем" гриде к существующим полям мастер-грида добавить новые поля с заголовками в виде имён параметров (а значения параметров из детальной таблицы станут значениями в добавленных полях "суммирующего" грида). Т.е. если посмотреть визуально, то детальный грид как бы разворачивается на 90 градусов и приклеивается к правой части мастер грида (см. прилагаемый скрин).

Повторюсь, возможность очень желательная, но как это сделать (и можно ли вообще), я слабо представляю. Т.к. число записей в детальной таблице переменное, надо или динамически создавать поля для датасета, который будет хранить совмещённые данные, а потом ещё и для грида, отображающего результирующее безобразие, или использовать какой-то хитрый StringGrid. Почему "хитрый" - потому что непременным условием задачи является возможность сортировки данных по столбцам, и я пока не знаю, существует ли такая возможность даже в продвинутых гридах (например, от TMS). Кроме того (и этот момент очень существенен!), мне нужна числовая сортировка по полям значений параметров, а не текстовая, каковая будет при использовании StringGrid-а, так что вариант с "суммирующим" датасетом и гридом предпочтительнее. Результирующий датасет (если это будет датасет) может быть Read-Only, тут главное - это возможность числовой сортировки по "приклеенным" столбцам.
Изображения
Тип файла: png Мастер.PNG (15.7 Кбайт, 4 просмотров)
Тип файла: png Деталь.PNG (12.5 Кбайт, 4 просмотров)
Тип файла: jpg Совмещение.jpg (79.6 Кбайт, 2 просмотров)
Ответить с цитированием