RTC: Design Layout mit Seitenumbruch

17. Dezember 2012 17:25

Hallo zusammen,

ich weiß nicht ob einer schon einmal vor diesem Problem stand: Ich habe einen Report in Dynamics NAV 2009 Classic Client erzeugt. Bitte nicht wundern über den Aufbau, das ist ein reiner Testbericht um den Report Viewer zu testen! Hier habe ich also zum spielen ein paar Integer DateItems eingebaut - das man dies anders macht weiß ich selbst :wink: Dieser sieht aus wie folgt:

DataItem | Name | DataItemTableView
Integer | PageHeader | SORTING(Number) WHERE(Number=CONST(1)) - Soll nur nen Header anzeigen
Integer | MainLevel | SORTING(Number) WHERE(Number=FILTER(1..3))
Integer | SubLevel | SORTING(Number) WHERE(Number=FILTER(1..5))

Der Report stellt also ganz stupide einen Header da, dann eine Ausgabe die wie folgt aussieht: [MainLevel].Number [SubLebel].Number

1 1
1 2
1 3
...
3 5

Nun habe ich via Extras - Create Layout Suggestion das Layout erzeugt und bearbeitet. Danach bin ich folgender Anleitung gefolgt: http://msdn.microsoft.com/en-us/library/dd338694.aspx Abschnitt To create a new page per record by grouping data um eine Gruppierung nach MainLebel.Number zu bilden und nach jedem Datensatz eine neue Seite zu bilden. Somit sollte ich 3 Seiten erhalten wo dann die Zahlen 1-5 ausgegeben werden. Funktioniert soweit auch ganz gut, aber warum bekomme ich eine Leere Seite zum Anfang der Seite. Es funktioniert ja eigentlich alles, nur das die erste Seite leer ist und jede weitere Seite korrekt angezeigt wird.

Kennt das Problem jemand und weiß abhilfe? Ich kann alles bereitstellen was Ihr braucht. Ich komme einfach nicht weiter!

Thx!!!

Re: RTC: Design Layout mit Seitenumbruch

17. Dezember 2012 17:36

Willkommen bei uns!

Gib den Textboxen/der Tabelle eine Hintergrundfarbe, um zu sehen, ob die erste, vermeintlich leere Seite diese Boxen enthält oder nicht.

Re: RTC: Design Layout mit Seitenumbruch

17. Dezember 2012 17:41

Ok, das habe ich getan und tatsächlich werden die Textboxen auch auf der ersten Seite zur Gruppierung angezeigt, sind aber leer!

Wie kann ich das unterbinden?

Re: RTC: Design Layout mit Seitenumbruch

17. Dezember 2012 18:10

Als erstes musst du verstehen, wie die da hingekommen sind.
Schaue dir dazu das gefüllte Dataset an:
In der NAV-Seitenvorschau (nicht RequestPage) oben auf "Info zu diesem Bericht" klicken. Bei diesem ersten Aufruf erhältst du eine Aufforderung, das Spielchen zu wiederholen.
Ab dem zweiten Aufruf also erhältst du nun das Dataset. Exportiere es am besten nach Excel.

Hier kannst du ganz genau verfolgen, welches DataSet-Feld wie gefüllt wurde.
Abhängig von deinen DataItem-Einrückungen (die du in deinem Eingangsbeitrag leider nicht beschrieben hattest) werden neue Zeilen erstellt oder auch nicht, Felder leer gelassen oder auch nicht.

Such in dieser Exceldatei nach eines der Felder (DataSetFieldName), das du eingefärbt hattest. Du wirst feststellen, dass du auch in der Exceldatei leere Felder finden wirst. Es werden halt alle Datensätze des Datasets (= alle Zeilen der Exceldatei) durchlaufen.

Folglich musst im RDLC-Layout durch Filter oder einen Hidden-Ausdruck an geeigneter Stelle dafür sorgen, dass leere Einträge nicht berücksichtigt werden.
Dies kann ich leider nur so allgemein beschreiben, weil ich weder DataItems noch Layout vor Augen habe.

PS: Du hast von Gruppierung gesprochen. Vielleicht/wahrscheinlich sind deine Gruppierungsausdrücke noch nicht vollständig.

Re: RTC: Design Layout mit Seitenumbruch

18. Dezember 2012 12:49

Cooool, das Feature kannte ich noch gar nicht :oops:

Ich habe folgendes herausgefunden. Die erste Zeile im DataSet-Result stellt nur die Header-Page meines Reports da. Hier wird quasi das CompanyInfo Picture und eine Seitenanzahl angezeigt in einer HeaderSection. Danach erst folgen, logischer Weise, alle anderen Daten.

Mein Report sieht wie folgt aus (Format: DataItem, Name, Indent, TableView - Beschreibung):

1. Integer, PageHeader, 0, SORTING(Number) WHERE(Number=CONST(1)) - Gibt nur eine HeaderSection im Report aus
2. Integer, MainLevel, 0, SORTING(Number) WHERE(Number=FILTER(1..3)) - Gibt einen MainLevel, Header aus wo die Feldüberschriften angezeigt werden
3. Integer, SubLevel, 1, SORTING(Number) WHERE(Number=FILTER(1..5)) - Gibt einen Body aus mit Nummer aus MainLevel und Nummer aus SubLevel, also: 1 1, 1 2, 1 3, 1 4, 1 5 usw. vor 2 1, 2 2, 2 3, ... soll ein Seitenumbruch erfolgen!

Was mache ich da falsch? Report habe ich auch mal angehangen:
R55551.fob
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: RTC: Design Layout mit Seitenumbruch

18. Dezember 2012 13:18

Ich glaube, du hast einen unnötig komplizierten Ansatz gewählt.
Die fob kann ich mir leider nicht ansehen; das würde leider zu viel Zeit kosten, die ich auf der Arbeit für andere als meine eigenen Arbeitskollegen nicht habe ;-)
Was immer gut ist, sind angehängte PDFs vom Layout und der Seitenansicht.

Deine DataItems sollten nicht einen PageHeader, TableHeader und LineData-Aufbau wiederspiegeln. Eigentlicht sollte es hier so wie für den CC aussehen.
So wie ich dich verstehe, genügt ein einziges DataItem (was bei dir momentan das 3. DataItem ist). Sorge lediglich dafür, dass alle Felder, die du in Sections für DataItem 1 und 2 gepackt hast, in die Sections für DataItem 3 wandern.
Zum Vergleich: Hättest du den Report nur für den CC gedesignt, hätte nur das dritte DataItem ausgereicht. Du hättest Textboxen in die Header- und Body-Sections des einen DataItems gepackt.

Wenn du diese Änderungen durchgeführt hast, vergleiche dein jetziges DataSet mit dem vorherigen. Du hast keine "Leerstände" mehr. Dies wird dazu führen, dass du keine unnötigen Seitenumbrüche erzeugst.

Und noch was: RDLC benötigt von dir keine übergebene Seitenzahl, den aktuellen Benutzer oder das heutige Datum, sondern stellt dir diese Werte mit =Globals!... .Value zur Verfügung.
Je weniger Felder (=Spalten) im DataSet du erzeugst, desto schneller wird dein Report ausgeführt werden.