[gelöst]PageNo im Body (RDLC-Reporting)

29. April 2015 10:22

Hallo zusammen,

es wurde über das Reporting schon so viel und so tolles geschrieben, leider habe ich das, was ich jetzt brauche, nicht gefunden !

Ganz einfach: wie kann ich im Body auf die PageNo referenzieren ? (wegen Visibility). Wenn man sie im Body verwenden will, gibt es Fehler. Aber vielleicht gibt es ja einen Umweg (z.B. eigene Variable?). Oder wie sonst weiß man, ob man sich auf der ersten Seite befindet oder nicht ?

Grüße
Atlan / Hermann Schubert.
Zuletzt geändert von Atlan am 5. Mai 2015 10:27, insgesamt 3-mal geändert.

Re: PageNo im Body (RDLC-Reporting)

29. April 2015 10:54

Oder wie sonst weiß man, ob man sich auf der ersten Seite befindet oder nicht


Das kommt darauf an. Normalerweise muss man das nicht wissen :wink:

Man kann sich das Erstellen eine Berichts in etwa vorstellen wie das Abrollen einer Rolle Küchenpapier. Der Generator fängt auf der 1. Seite mit der linken oberen Ecke des ersten Objektes (Rechteck oder Tablix) zu zeichnen, und zeichnet dann weiter bis zum Letzten Objekt ganz unten. Dabei sind ihm Seitenvorschübe (Blattperforationen) weitestgehend egal (mal abgesehen vom KeepTogehter). Am Ende trennt er die bedruckten Blätter an der Perforation auf und fügt jeweils Seitenkopf und -fuß ein.
Dein Ziel muss es jetzt sein, das Layout so zu bauen, das alles was vor der eigentlichen Tabelle kommt, auch vor dem Tablix ausgegeben wird.

Gruß, Fiddi

Re: PageNo im Body (RDLC-Reporting)

29. April 2015 10:57

Vielleicht findest du hier einen Tipp in die richtige Richtung: viewtopic.php?p=95943#p95943

Re: PageNo im Body (RDLC-Reporting)

29. April 2015 13:13

Hallo zusammen,

ich mache das jetzt wie folgt:

Im Bericht habe ich eine Integer-Variable definiert : Counter. Diese wird pro Header auf 0 gesetzt, und pro Zeile um 1 aufaddiert.
Dieser Counter wird an den RDLC übergeben.

Bei den Zeilen, die ich nur auf der ersten Seite haben will kommt dann in die Row-Visability folgende Expression: =Fields!Counter.Value>1
umgekehrt bei Zeilen, die nur ab Seite 2 gedruckt werden sollen : =Fields!Counter.Value=1

Ich denke mal, dass dieser Integer-Wert den Report nicht groß langsamer macht.

Grüße
Atlan / Hermann Schubert.

Re: [gelöst]PageNo im Body (RDLC-Reporting)

29. April 2015 13:29

Bei den Zeilen, die ich nur auf der ersten Seite haben will kommt dann in die Row-Visability folgende Expression: =Fields!Counter.Value>1
umgekehrt bei Zeilen, die nur ab Seite 2 gedruckt werden sollen : =Fields!Counter.Value=1


Es ist keine gute Idee im RDLC alles in einer Tabelle unterzubringen, und dann mit Hidden zu versuchen die Seite zu steuern auf der das steht. Was du nicht hinbekommst, ist zu steuern wann die zweite Seite anfängt. Das kannst du nur mit einer Gruppe steuern

Aber um da genauere Aussagen zu treffen, muss man die Struktur des Belegs kennen.

Gruß Fiddi

Re: PageNo im Body (RDLC-Reporting)

5. Mai 2015 09:16

Hallo zusammen,

war wirklich keine gute Idee mit dem Counter: Da die Zeilen, die bei Bedarf (ab 2.Seite) wegfallen sollen, ausserhalb der Sortierung / im Header liegen, bleibt 'Counter' pro Rechnung immer gleich. :-(
Korrigiert mich, wenn ich falsch liege:
1) der Pageheader ist in seiner Größe nicht zur Laufzeit beeinflussbar.
2) Ich habe noch keine Möglichkeit gefunden, die Seitenzahl irgendwie vom Pageheader/Footer an Zeilen zu übergeben.

In den vielen guten Beiträgen in div. Foren habe ich zum Thema variable Seitenköpfe (z.B. bei Angeboten, Rechnungen) leider nichts gefunden, was meine Probleme wirklich löst. Bei einer Lösung wäre mir die Performance relativ wurscht, da vernachlässigbar.

Grüße
Atlan / Hermann Schubert.

Re: PageNo im Body (RDLC-Reporting)

5. Mai 2015 09:47

Hallo,

was möchtest du denn überhaupt lösen?

Das einzige Problem was ich mir vorstellen könnte, bei dem man die Seitenzahl bräuchte, wäre wenn du in den Belegzeilen Daten nur auf der ersten Seite anzeigen möchtest, oder du einen größeren Fuß nur auf der ersten Seite anzeigen möchtest. Wobei man letzteres nach meinem Kenntnisstand wirklich nicht lösen kann.

Es gibt in RDLC nicht die Möglichkeit zu definieren, was im Body auf einer Seite gedruckt werden soll. Man kann nur definieren ob und in welcher Reihenfolge etwas gedruckt werden soll. Wenn der Platz auf der ersten Seite nicht reicht, wird auf der zweiten Seite weiter gedruckt, das kann man nicht verhindern.

Für Belege mit unterschiedlicher erster und zweiter Seite gibt es diverse Lösungen z.B. hier und hier. (sind zwar für 2009, funktioniert aber auch in 2013..)


Gruß Fiddi

Re: PageNo im Body (RDLC-Reporting)

5. Mai 2015 10:26

Hallo Fiddi,

vielen Dank für diesen Link ! Der hilft wirklich weiter !

Grüße
Atlan / Hermann Schubert.