2016-01-19 19 views
14

Używam formularza okna do generowania karty identyfikacyjnej za pomocą przeglądarki raportów C# i Microsoft. Wszystko działa poprawnie, ale nie mogę znaleźć kierunku powtarzania kolumny w przeglądarce raportów Microsoft.Powtórz kierunek kolumny w przeglądarce raportów Microsoft

obecnej sytuacji

Mój raport rozmiar papieru to A4. Każda strona może wyświetlać maksymalnie 10 pojedynczych kart. Na stronie są 2 kolumny. Każda kolumna wyświetla 5 kart. Generuje kartę, jak pokazano na obrazku. Kierunek powtarzania kolumny jest ustawiony pionowo. Najpierw wyświetl pierwszą kolumnę (1-5), a następnie wyświetl drugą kolumnę (6-10).

enter image description here

Moja Wymagania

Chcę raport powtórz kolumna kierunek się poziomo tak jak na obrazku poniżej. Pierwszy wyświetlacz 1 następnie 2 i 3 i 4 i tak dalej.

enter image description here

Dlaczego chcę, aby wyświetlić poziomo zamiast pionowo?

To zapisze papier. Na przykład, jeśli użytkownik wygeneruje tylko 4 dokumenty tożsamości, wówczas zgodnie z bieżącym scenariuszem wygeneruje 4 karty w kolumnie 1, a cały obszar strony zostanie zmarnowany, ponieważ nie będę mógł ponownie wykorzystać lewej przestrzeni.

Powtarzając kierunek kolumny w poziomie, 4 karty będą wyświetlane jak w kolumnie 1, karcie 1 i 3, aw kolumnie 2 wyświetlone zostaną karty 2 i 4. Mogę wtedy pociąć papier i użyć go później.

Szukałem dużo, ale nie mogłem znaleźć rozwiązania. Wszelkie sugestie, komentarze i linki będą pomocne. Nie mogę używać żadnych innych raportów. Z góry dziękuję.

+0

Zakładam, że twoje karty są rzędami w raport? Jeśli tak, czy mógłbyś opublikować kod generujący każdą kartę identyfikacyjną? – KidCode

Odpowiedz

7

Tworzenie macierzy

Określ swój wiersz grupowania jako

=Ceiling(Fields!CardNo.Value/2) 

Zdefiniuj grupowanie kolumn jako

=Fields!CardNo.Value Mod 2 

swój projekt raportu będzie wyglądać następująco. Grupa zewnętrzna jest pokazana tylko w celach ilustracyjnych, ale można ją usunąć.

enter image description here

Teraz po uruchomieniu raportu. otrzymasz wynik szukasz

enter image description here

Bez grupowania nagłówka i stopki. Twój wyjście raport będzie

enter image description here

1

Ten problem może być postrzegane jako błąd odwzorowania gdzie trzeba przetasowania przedmiotów następująco:

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 

Można zauważyć, że następujący wzór takiego:

  1. f(n) = floor(n/2) + 1 jeśli n jest nieparzysta
  2. f(n) = (10 + n)/2 jeśli n jest parzyste

Th nam, możesz zmienić kolejność, w którą wkładasz swoje przedmioty w następujący sposób. Że podano index elementu od 0-9 (start od 0 obserwuje C# typowy numer indekser), można zrobić coś takiego:

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

i powinieneś być w stanie postawić Cards poprawnie.

Uwaga: bez podanego kodu ma to ukazać, w jaki sposób można rozwiązać problem koncepcyjnie.

1

Innym rozwiązaniem. Będzie to działać z lub bez grup na twoich stołach.

Umieść dwie tabele obok siebie na swoim raporcie. Ustaw pierwszą tabelę na zapytanie o partycje rozpoczynające się od pierwszego rekordu i przeskakując o 1. Następnie ustaw drugą tabelę na zapytanie o partycje zaczynające się od drugiego rekordu, przeskakując o 1.