Направление повторения столбцов в средстве просмотра отчетов Microsoft

Я использую форму окна для создания удостоверения личности с помощью С# и средства просмотра отчетов Microsoft. Все работает нормально, за исключением того, что я не мог найти направление повторения столбца в средстве просмотра отчетов Microsoft.

Текущий сценарий

Размер моего отчета составляет A4. На каждой странице может отображаться максимум 10 отдельных карт. На странице есть 2 столбца. Каждый столбец отображает 5 карт. Это генерирует карту, как показано на изображении. Направление повторения столбцов вертикально. Он сначала отображает 1-й столбец (1-5), а затем отображает второй столбец (6-10).

введите описание изображения здесь

Мои требования

Я хочу, чтобы направление повторения столбца отчета было горизонтально, как на изображении ниже. Сначала отобразите 1, затем 2 и 3 и 4 и т.д.

введите описание изображения здесь

Почему я хочу отображать горизонтально, а не вертикально?

Он сохранит бумагу. Например, если пользователь генерирует 4 удостоверения личности только тогда, как в текущем сценарии, он будет генерировать 4 карты в столбце 1, и все пространство страницы будет потрачено впустую, потому что я не могу повторно использовать левое пространство.

Повторяя направление столбца по горизонтали, будут отображаться 4 карты, как в столбце 1, карта 1 и 3, а в столбце 2 будут отображаться карты 2 и 4. Затем я могу разрезать бумагу и повторно использовать ее позже.

Я искал alot, но не нашел никакого решения. Любые предложения, комментарии или ссылки будут полезны. Я не могу использовать какие-либо другие отчеты. Спасибо заранее.

Ответы

Ответ 1

Создать матрицу

Определите группировку строк как

=Ceiling(Fields!CardNo.Value/2)

Определите группировку столбцов как

=Fields!CardNo.Value Mod 2

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

введите описание изображения здесь

Теперь, когда вы запускаете отчет. Вы получите результат, который вы ищете

введите описание изображения здесь

Без каких-либо группировок верхний и нижний колонтитулы. Вывод отчета будет

введите описание изображения здесь

Ответ 2

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

n -> f(n)
----------
1 -> 1
2 -> 6
3 -> 2
4 -> 7
5 -> 3
6 -> 8
7 -> 4
8 -> 9
9 -> 5
10 -> 10

n is the original position
f(n) is the mapped position

Можно видеть, что он следует за таким шаблоном:

  • f(n) = floor(n / 2) + 1, если n нечетно
  • f(n) = (10 + n) / 2, если n равно

Таким образом, вы можете перетасовать заказ, в который вы поместите свои предметы следующим образом. Это дано index элемента от 0-9 (начало от 0 следует за С# типичным индексом числа), вы можете сделать что-то вроде этого:

index++;
int newIndex = index % 2 == 0 ? (10 + index) / 2 : index / 2 + 1;
newIndex--;

И вы должны правильно разместить свой Cards.

Примечание: без фактического кода это должно показать, как вы можете решить проблему концептуально.

Ответ 3

Другой ответ. Это будет работать с группами или без них на ваших таблицах.

Поместите два стола бок о бок в отчет. Задайте первую таблицу для запроса, в котором разделы, начинающиеся с первой записи, и пропущенные на 1. Затем установите вторую таблицу в запрос, который разделяет начало, начиная с второй пропуски записи на 1.