Есть два связанных Источника данных Master и Detail.
Первый (Master) содержит иерархические данные -узлы дерева, а второй (Detail) содержит по нескольку детальных записей для каждого узла.
Вывожу Master данные в бэнде "Дерево" (HierachicalBand).
Какими средствами можно в строке Дерева вместе с Master данными вывести кросс данные из Detail в виде:
Master.поле1 Master.поле2 Detail.поле1 Detail.поле1 Detail.поле1 ..
Master.поле1 Master.поле2 Detail.поле1 Detail.поле1 Detail.поле1 ..
Master.поле1 Master.поле2 Detail.поле1 Detail.поле1 Detail.поле1 ..
Master.поле1 Master.поле2 Detail.поле1 Detail.поле1 Detail.поле1 ..
Дерево + Кросс данные
Re: Дерево + Кросс данные
Здравствуйте,
Не могли бы вы прислать пример данных для анализа.
Спасибо.
Не могли бы вы прислать пример данных для анализа.
Спасибо.
Re: Дерево + Кросс данные
У нас сложная структура таблиц. Поэтому придумал простой искусственный пример (MSSQL).
Пример: Есть узлы дерева #CalcNode (дерево расчета). Для каждого узла есть несколько подчиненных записей в #CalcNodeExpend (некие расходы по узлу).
Сейчас у меня в шаблоне отчета два соответствующих источника данных CalcNode и CalcNodeExpend, связанных по полю NodeId.
Вывожу Master данные из CalcNode в бэнде "Дерево" (HierachicalBand). На бэнде лежит лишь текст с названием узла (NodeName).
Detail данные вывожу в подчиненном бэнде (ChildBand)- там лежат кросс-данные (ChildDataBand) привязанные к CalcNodeExpend. В ячейках кросс-данных выводятся значения поля Expend.
Задача: Нужно вывести кросс-данные непосредственно в Master строке СПРАВА от названия узла (NodeName).
Сейчас при попытке поместить кросс-данные в Master строку, они всегда выводятся без учета иерархического отступа и накладываются на название узла.
SQL-запрос для Master-таблицы:
SQL-запрос для Detail-таблицы:
Пример: Есть узлы дерева #CalcNode (дерево расчета). Для каждого узла есть несколько подчиненных записей в #CalcNodeExpend (некие расходы по узлу).
Сейчас у меня в шаблоне отчета два соответствующих источника данных CalcNode и CalcNodeExpend, связанных по полю NodeId.
Вывожу Master данные из CalcNode в бэнде "Дерево" (HierachicalBand). На бэнде лежит лишь текст с названием узла (NodeName).
Detail данные вывожу в подчиненном бэнде (ChildBand)- там лежат кросс-данные (ChildDataBand) привязанные к CalcNodeExpend. В ячейках кросс-данных выводятся значения поля Expend.
Задача: Нужно вывести кросс-данные непосредственно в Master строке СПРАВА от названия узла (NodeName).
Сейчас при попытке поместить кросс-данные в Master строку, они всегда выводятся без учета иерархического отступа и накладываются на название узла.
SQL-запрос для Master-таблицы:
Код: Выделить всё
/*insert data into #CalcNode table*/
IF Object_id('tempdb..#CalcNode') IS NOT Null DROP TABLE #CalcNode
CREATE TABLE #CalcNode(
NodeId BIGINT NOT NULL,
NodeName VARCHAR(100) NOT NULL,
NodeParentId BIGINT NULL
)
DECLARE @maxCount BIGINT,
@count BIGINT,
@parentId BIGINT;
SET @maxCount = 5;
SET @count = 1;
WHILE @count <= @maxCount
BEGIN
If @count = 1
SET @parentId = NULL;
ELSE
SET @parentId = @count - 1;
INSERT INTO #CalcNode(NodeId, NodeName, NodeParentId)
VALUES (@count, 'Node_' + CONVERT(VARCHAR(400), @count), @parentId)
SET @count = @count + 1;
END
SELECT * FROM #CalcNode
Код: Выделить всё
/*insert random data into #CalcNodeExpend table*/
IF Object_id('tempdb..#CalcNodeExpend') IS NOT Null DROP TABLE #CalcNodeExpend
CREATE TABLE #CalcNodeExpend(
ExpendId BIGINT IDENTITY(1,1) NOT NULL,
NodeId BIGINT NOT NULL,
Expend float NULL
)
DECLARE @maxCount BIGINT
SELECT @maxCount = MAX(NodeId) FROM #CalcNode
INSERT INTO #CalcNodeExpend(NodeId, Expend)
SELECT 1 + ABS(CHECKSUM(NewId())) % @maxCount, ABS(CHECKSUM(NewId())) % 1000
FROM #CalcNode t1
JOIN #CalcNode t2 ON t2.NodeId <3
SELECT * FROM #CalcNodeExpend ORDER BY NodeId
Re: Дерево + Кросс данные
Здравствуйте.
Попробуйте положить Cross-Data на панель как это сделано в приложенном шаблоне отчёта. Спасибо.
Попробуйте положить Cross-Data на панель как это сделано в приложенном шаблоне отчёта. Спасибо.