Вопрос

У меня есть матрица в SQL reporting, и я хотел бы, чтобы она была напечатана на странице формата А4.Если в матрице меньше 4 столбцов, то она подходит, но для более чем 4 столбцов я бы хотел, чтобы матрица была обернута и показывала только 4 столбца на странице.Возможно ли это?Я использую SQL Reporting 2005 в локальном режиме.

Это было полезно?

Решение

Я нашел обходной путь:

  1. Сначала я добавил в свой источник данных поле под названием column count (количество столбцов).Поскольку источник данных встроен в бизнес-объект, мне было легко определить, сколько в нем столбцов данных.
  2. Затем я создал список в своем отчете и переместил свою матрицу в этот список.
  3. Я создал групповое выражение =Ceiling(Поля!columnCount.Значение / 4) для списка.

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

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

Отказ от ответственности:это была не моя идея...Я адаптировал ее из Неряшливые Хаки Криса Хейза.

Другие советы

Нет никакого способа встроить столбцы;Решение Mboy, приведенное выше, очень похоже на то, что я делал в прошлом, поэтому я не буду повторять его шаги здесь, хотя и предупрежу вас:для матриц с большим количеством столбцов количество страниц в вашем отчете будет расти экспоненциально.В вашем случае это может и не быть проблемой;но мы обнаружили, что в большинстве случаев дешевле (с точки зрения вывода страницы) не переносить столбцы.

В дополнение к ответу MBoy я хотел показать несколько диаграмм на одной странице, но количество диаграмм будет варьироваться в зависимости от данных.Чего я хотел, так это показать две диаграммы подряд с таким количеством строк, сколько необходимо.Я сделал следующее:

  1. Как предложил MBoy, я создал поле "Count" с именем [ChartNumber] в данных, которое увеличивается на единицу для каждой диаграммы (так что, если бы у меня было 7 диаграмм, строки были бы пронумерованы 1-7).
    Чтобы добиться этого, я использовал SQL-функцию DENSE_RANK() для создания поля в моем запросе, такого как DENSE_RANK() OVER (ПОРЯДОК ПО [Данным] .[ItemtoCount]) КАК [Номер диаграммы].
    Поэтому, если бы мне нужна была другая диаграмма для каждого отдела, я мог бы использовать DENSE_RANK () ПОВЕРХ (ПОРЯДОК ПО [Данным].[Отдел]) КАК [Номер диаграммы]

  2. Я добавил список в форму и привязал его к своему набору данных

  3. Затем я установил для группы строк значение group on =Ceiling(Поля!ChartNumber.Value/2)

  4. Затем я добавил группу столбцов в =Ceiling(Поля!ChartNumber.Value Mod 2)

  5. Создайте диаграмму внутри списка и выполните предварительный просмотр, и вы должны увидеть две диаграммы рядом друг с другом в каждой строке.

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

Редактировать:Более общим решением для n столбцов является =Ceiling(поля!ChartNumber.Value / n) и =Ceiling(n * полей!ChartNumber.Value Mod n)

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

Согласно MSDN, Области данных Табликса разбиваются на страницы по горизонтали почти так же, как таблица разбивает их на страницы по вертикали, то есть вы можете указать разрыв страницы при изменении группы.Существует еще одна статья MSDN, в которой предлагается использовать выражение разбивки на страницы, но этот метод уже объяснен MBoy, поэтому я не буду его повторять, за исключением того, что это одобренный метод.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top