График SSRS для основных этапов - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно создать отчет SSRS для представления фактической даты начала и запланированных дат начала для этапов проекта (выбранных в качестве входного параметра). Диаграмма должна выглядеть следующим образом: Milestone_Table_Chart Я создалтаблица в отдельной таблице.Тем не менее, я не знаю, какой тип диаграммы мне использовать и как мне настроить диаграмму?(Данные диаграммы, Группы категорий и Группы серий).

(Данные поступают с SQL Server, SSRS версии 14.0.1016.285; SSDT 15.6.4)

Заранее большое спасибо

1 Ответ

0 голосов
/ 16 октября 2018

Это может показаться немного запутанным, но это довольно просто, поэтому придерживайтесь его:)

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

Подход будет заключаться в том, чтобы использовать подотчет для построения точек и основной отчет для отображения общей таблицы.,Учитывая это, поскольку у нас будет несколько наборов данных, ссылающихся на наши данные, я добавил несколько таблиц в свою примерную базу данных, прежде чем приступить к следующему.

Первая - это простая таблица, содержащая месяцы и годы, вы могли быпредставление использования таблицы дат, если она у вас есть, но сейчас это будет сделано.

CREATE TABLE prjYearMonth (Year int, Month int)

INSERT INTO prjYearMonth VALUES
(2018, 8),
(2018, 9),
(2018, 10),
(2018, 11),
(2018, 12),
(2019, 1),
(2019, 2)

Далее идет таблица этапов проекта

CREATE TABLE prjMileStones (msID int, msLabel varchar(50), msPlannedStart date, msActualStart date)

INSERT INTO prjMileStones VALUES
(1, 'Milestone 1', '2018-10-30', '2018-12-13'),
(2, 'Milestone 2', '2018-11-12', '2018-12-10'),
(3, 'Milestone 3', '2018-10-21', '2018-12-25'),
(4, 'Milestone 4', '2018-10-18', '2018-11-28'),
(5, 'Milestone 6', '2019-01-08', '2019-01-29')

ОК, теперь давайте запустим отчет...

Создайте новый пустой отчет, затем добавьте набор данных со следующим запросом

SELECT 
    * 
    FROM prjYearMonth d
    LEFT JOIN prjMileStones t on (d.Year = YEAR(t.msPlannedStart) AND d.Month = Month(t.msPlannedStart))
                or (d.Year = YEAR(t.msActualStart) AND d.Month = Month(t.msActualStart))

Теперь добавьте элемент матрицы в отчет.Добавьте группу строк, которая группируется в msLabel.

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

Добавьте столбцы в группу строк, чтобы в итоге вы получили 4 столбца msID;msLabel;msPlannedStart;msActualStart.

Наконец (на данный момент) установите для поля «Выражение месяца» (в заголовке столбца) значение

= Format(DATESERIAL(2017, Fields!Month.Value, 1), "MMM")

Это даст нам только название месяца, а неномер (2017 год не имеет значения, подойдет любой год).Теперь просто отформатируйте, как требуется.

Дизайн отчета должен выглядеть примерно так ..

enter image description here

Если мы запустим отчет сейчас, мыполучим это ..

enter image description here

Теперь, чтобы построить точки ...

Для этого мы создадим небольшой подотчет.Подотчет будет принимать 3 параметра.Год, месяц, msID (идентификатор вехи из вашей основной таблицы).Нам понадобятся данные в несколько иной структуре для этого подотчета, но работу можно выполнить в запросе к набору данных, поэтому в самой базе данных ничего нового не требуется.

Итак, создайте новый отчет, давайте назовем его_subMonthChart.

Затем добавьте набор данных со следующим запросом. *

DECLARE @t TABLE(msID int, msLabel varchar(50), PlannedOrActual varchar(1), msStartDate date)

INSERT INTO @t 
    SELECT msId, mslabel, 'P', msPlannedStart FROM prjMileStones
    UNION ALL
    SELECT msId, mslabel, 'A', msActualStart FROM prjMileStones


SELECT 
    1 AS Y, Day(msStartDate) as Day, PlannedOrActual 
    FROM prjYearMonth d
    LEFT JOIN @t t on (d.Year = YEAR(t.msStartDate) AND d.Month = Month(t.msStartDate))
    WHERE [Year] = @Year and [Month] = @Month and msID = @msID

Теперь в вашем отчете должно быть 3 параметра, которые были созданы автоматически, измените все три параметра на Allow Null.

Примечание: Y в наборе данных - это просто какое-то произвольное значение, помогающее построить график на диаграмме.Я установлю ось Y в диапазоне от 0 до 2, чтобы посередине стояло 1.

Затем добавьте линейный график с маркерами.Пока не беспокойтесь о размере ... Установите значения как Y Установите группы категорий как Day Установите группы серий как PlannedOrActual

Щелкните правой кнопкой мыши по горизонтальной оси, выберите свойства иустановите для типа оси значение Скалярное, выключите «Всегда включать ноль», затем установите Мин. = 1, Макс. = 31, Интервал = 1, Тип интервала = По умолчанию.

Обратите внимание, что для данных в месяцах, которые не имеют31 день точки графиков не будут точными, но они будут достаточно близки для ваших целей.

Щелкните правой кнопкой мыши по вертикальной оси, выберите свойства и установите Mn = 0, Max = 2, Interval = 1, Interval Type= По умолчанию

Далее щелкните правой кнопкой мыши одну из линий серии и выберите свойства.Установите маркер на Diamond, размер маркера на 8pt и маркер. Раскрасьте это выражение =IIF(Fields!PlannedOrActual.Value = "P", "Blue", "Green")

Дизайн отчета должен выглядеть примерно так ... (в частности, проверьте выделенные биты)

enter image description here

Теперь давайте быстро протестируем подотчет. На основе моих выборочных данных я установил параметры на 2019, 1 и 5 и получу следующие результаты ....

enter image description here

Как мы видим, наши две даты, которые выпадают в январе для этого этапа, были нанесены примерно в правильных положениях.

Почти там ... Затем щелкните правой кнопкой мыши по обеим осям и отключите «Показать оси», чтобы мы скрыли их.Теперь измените размер диаграммы так, чтобы она соответствовала основной ячейке отчета.В моем примере я установил размер 2 см, 1,2 см и переместил его в верхнюю левую часть отчета.Затем установите размер отчета, равный размеру диаграммы (2 см, снова 1,2 см в моем случае).

Сохраните подотчет и вернитесь к основному отчету ...

Дляв ячейке «Данные», где пересекаются строки и столбцы, задайте размер, соответствующий размеру подотчета (2 см, 1,2 см), затем щелкните правой кнопкой мыши ячейку и вставьте подотчет.

Щелкните правой кнопкой мыши вновь вставленный элемент подотчета и выберитеproperties.

Выберите _subMonthChart в качестве вложенного отчета из раскрывающегося списка.

Щелкните вкладку параметров.Добавьте запись для каждого параметра (год / месяц / msID) и установите его значение в качестве соответствующего поля из набора данных.

FINALLY !!!!Установите границу для ячейки, содержащей подотчет, чтобы границы были круглыми, просто так, чтобы она соответствовала вашему макету ..

Теперь ваш дизайн отчета должен выглядеть следующим образом ...

enter image description here

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

Когда мы запустим отчет, мы наконец-то получим это ...

enter image description here

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

...