Фильтр SSRS Tablix в 2 столбца, который динамически обновляется для ссылок на страницы меню - PullRequest
0 голосов
/ 09 марта 2020

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

enter image description here

Я хочу создать страницу меню, которая имеет имена отчетов в двух столбцах и не знаю, как go об этом.

В режиме конструктора у меня есть одна таблица, которая в настоящее время выглядит следующим образом

enter image description here

С этим кодом в наборе данных:

SELECT [ReportOrder],[ReportID],[ReportPath],[Folder],[ReportName],[ItemType]FROM [dbo].[DimSSRSReportList] WHERE Folder = 'Customer Services' AND ItemType = 'Report'

Моя первоначальная мысль состояла в том, чтобы иметь два Tablix рядом и фильтровать 50% слева направо и 50% справа вниз, но это просто повторяет одни и те же отчеты с обеих сторон

enter image description here Кто-нибудь может помочь?

Большое спасибо

-------- РЕДАКТИРОВАТЬ! --------

I не могу получить группировку столбцов, используя функцию MOD для работы. Я добавил выражение в начало, и оно возвращает все как 1. Вот как оно выглядит в настоящее время

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Это расширение ответа Ганновера, но оно должно упростить ситуацию, поскольку в дизайне отчета нет вычислений.

Измените запрос набора данных на следующий ...

SELECT ReportOrder, ReportID, ReportPath, Folder, ReportName, ItemType
    , CAST(((ROW_NUMBER() OVER(ORDER BY ReportOrder)-1)  / 2) as INT) as RowN
    , ((ROW_NUMBER() OVER(ORDER BY ReportOrder)-1) % 2)  as ColN
FROM [dbo].[DimSSRSReportList] 
WHERE Folder = 'Customer Services' AND ItemType = 'Report'

Если вы выполните этот запрос в SSMS, вы увидите, что вы получаете данные, аналогичные этому упрощенному примеру

ReportOrder, ReportName, RowN, ColN
1            FirstReport    0     0
2            SecondReport   0     1
3            ThirdReport    1     0
4            FourthReport   1     1
5            FifthReport    2     0

Далее Добавьте матрицу и установите группу строк для группировки по RowN и группу столбцов для группировки по ColN

Так и должно быть.

0 голосов
/ 09 марта 2020

Это проще, если вы можете добавить номер строки к вашим данным.

SELECT ReportOrder, ReportID, ReportPath, Folder, ReportName, ItemType, 
    ROW_NUMBER()OVER(PARTITION BY ReportID ORDER BY ReportOrder) AS ROW_NUM
FROM [dbo].[DimSSRSReportList] 
WHERE Folder = 'Customer Services' AND ItemType = 'Report'

Затем используйте Tablix для отображения ваших данных, с группировкой столбцов

=Fields!ROW_NUM.Value MOD 2 

и группировкой строк

=INT((Fields!ROW_NUM.Value - 1) / 2)

Функция MOD вернет 1 или 2 для столбца, в котором будет отображаться имя отчета, а группа строк разделит данные на группы по 2 *.

...