Направление повторения столбцов в средстве просмотра отчетов 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.