Вывод значения из другого набора данных по условию
Здравствуйте!
Помогите, пожалуйста – как реализовать следующую задачу:
Есть два динамически формируемых набора данных (TClientDataSet)
Пример (условно):
Т.е., как бы если в событии Memo, отвечающего за вывод колонки «Цвет», onBeforePrint стоял скрипт:
(условно)
Помогите, пожалуйста – как реализовать следующую задачу:
Есть два динамически формируемых набора данных (TClientDataSet)
ClientDataSet1:
ID
NAME
ClientDataSer2:
ID
FID
AttrName
Value
В первом наборе данных хранится ID и название какого-то объекта. Второй набора данных – это набор атрибутов объекта из первого набора данных, т.е. ID – ID атрибута, FID – ID объекта, AttrName – название атрибута, Value – значение атрибута. Количество атрибутов может быть разное, включая не одного.Пример (условно):
ClientDataSet1:
700 Яблоко
800 Огурец
900 Вода
ClientDataSet2:
001 700 Цвет Красный
002 700 Количество 3
003 800 Цвет Зеленый
004 800 Количество 5
Как мне в отчете сделать вывод всех строк первого набора данных, со значениями полей из второго набора данных:Название объекта Атрибут1 Атрибут2
Пример:
Название Цвет Количество
Яблоко Красный 3
Огурец Зеленый 5
Вода
Т.е., как бы если в событии Memo, отвечающего за вывод колонки «Цвет», onBeforePrint стоял скрипт:
(условно)
SELECT VALUE FROM ClientDataSet2 WHERE (FID = ClientDataSet1.ID) AND (AttrName = ‘Цвет’)
Спасибо!
Комментарии
В main демо есть примеры.
Но всё-таки лучше использовать один набор данных, в котором с помощью JOIN объединить данные обеих таблиц
Использовать один набора данных не предоставляется возможным, так как заранее не известно количество подчиненных записей.
В первом сообщении немного в упрощенной форме я отобразил модель описания объекта и его атрибутов, где есть набор данных - объекты и набор данных - атрибуты этих объектов.
В отчете же я хочу оставить возможность пользователю выбирать, в каком столбце какой атрибут будет выводиться.