none
Plazierungslogik bei Reporting Services Visual Studio RRS feed

  • Frage

  • Hallo

    Ich erstelle gerade einen Bericht mit BIDS und hab ein Problem das ich nicht lösen konnte. Der Aufbau des Berichtes ist folgendermaßen.

    (Anfang  PageHeader)

    Eine Zeile Text .................................................

    (Ende Header Bereich)

    (Anfang Tablix1)

    Tabelle die nur einen Datensatz enthält)

    (Ende Tablix1)

    (Anfang Tablix2)

    Tabelle die mehrere Datensätze enthält)

    (Ende Tablix2)

    Es wird alles richtig angezeigt. Auf der ersten Seite des Berichts die Pageheader Zeile, die Tablix1 mit dem einen enthaltenen Datensatz und die Tablix2 mit den mehreren Datensätzen (geht über mehrere Seiten). Wenn ich aber nun auf die zweite Seite gehe, dann wird mir richtigerweise nur noch der Pageheader und die Tablix2 angezeigt. (Weil die Tablix1 ja nur einen Datensatz enthält). Nur das Layout hat sich jetzt geändert. Der Pageheader und die Tablix2 "kleben" nun zusammen, ohne Zwischenraum. (weil die Tablix1 nicht mehr angezeigt wird) Wie kann ich das Layout also stabil halten?

    Ich hoffe ich habs halbwegs verständlich beschrieben. Eigentlich sollte der von der Tablix1 benötigte Platz mit Leerzeilen angezeigt werden wenn sie nicht mehr angezeigt wird.

    So jetzt hör ich auf es zu beschreiben, es kommt mir vor mit jedem Satz wiurds unverständlicher ;-)

    lG. Peter


    Sql Server 2008 R2 Business Intelligence Development Studio Visual Basic 2010 Express Excel 2010

    Freitag, 30. März 2012 09:20

Antworten

  • Hallo Peter,

    schade, wäre auch zu einfach gewesen :-)

    Aber mit der Grundidee solltest Du weiter kommen. Den "Seitenkopf" wie zuvor beschrieben anlegen, in den Eigenschaften setzt Du aber "PrintOnFirstPage" auf False. In den Detailbereich setzt Du überhalb von Tablix die gleiche Textbox noch einmal; die wird nur auf der ersten Seite gerendert, also so:

    Auf die Art hängen auf der ersten Seite Header un Tablix direkt untereinander, auf den Folgeseiten hast Du einen Abstand zwischen dem eigentlichen Seitenheader und Tablix2.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    • Als Antwort markiert Peter01 Mittwoch, 4. April 2012 14:13
    Freitag, 30. März 2012 10:39

Alle Antworten

  • Hallo Peter,

    ich vermute mal, das zwischen "Header Ende" und "Tablix1" ein Leerbereich ist, damit die nicht auch aneinander kleben und der sich im "Detailbereich" befindet? Dann würde ich eher den Leerbereich in den "Header" bringen, damit Du den auf den Folgeseiten auch hast. Dann nur noch Tablix1 direkt unter den Header plazieren; so gilt der Leerbereich für Tablix1 auf der ersten Seite genauso wie für Tablix2 auf den Folgeseiten:

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Freitag, 30. März 2012 10:04
  • Hallo Olaf

    Danke für Deine schnelle Antwort. Die wäre auch zielführend, wenn nicht der Header und die Tablix1 zusammenkleben müssten.

    Header und Tablix1 ist zusammengesetz und es soll so aussehen als ob es eine Tabelle wäre. Warum ich das so mache hat technische Gründe. (Nur zur Info: Die Tablix1 kann ich nicht in den Pageheader Bereich anlegen weil das nicht erlaubt ist. Die Tabelle aus Einzelfelder machen geht auch nicht weil der Berichtsmanager (Webanwendung) Probleme mit den überlappenden Feldern hat)

    Vielleicht sollte ich mal rausfinden ob ich so eine Art Platzhalter einbauen kann?

    Danke Peter 


    Sql Server 2008 R2 Business Intelligence Development Studio Visual Basic 2010 Express Excel 2010


    • Bearbeitet Peter01 Freitag, 30. März 2012 10:14
    Freitag, 30. März 2012 10:12
  • Hallo Peter,

    schade, wäre auch zu einfach gewesen :-)

    Aber mit der Grundidee solltest Du weiter kommen. Den "Seitenkopf" wie zuvor beschrieben anlegen, in den Eigenschaften setzt Du aber "PrintOnFirstPage" auf False. In den Detailbereich setzt Du überhalb von Tablix die gleiche Textbox noch einmal; die wird nur auf der ersten Seite gerendert, also so:

    Auf die Art hängen auf der ersten Seite Header un Tablix direkt untereinander, auf den Folgeseiten hast Du einen Abstand zwischen dem eigentlichen Seitenheader und Tablix2.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    • Als Antwort markiert Peter01 Mittwoch, 4. April 2012 14:13
    Freitag, 30. März 2012 10:39
  • Hallo Olaf

    Ja wäre zu einfach gewesen ;-)

    Ich hab dein Anregung noch nicht "nachgebaut", aber sie scheint genial zu sein. Ich hoffe ich komme heute noch dazu sie zu testen. Vielen Dank, es ist beruhigend zu wissen, das man Hilfe bekommt wenn man mal nicht weiterkommt.

    Vielen Dank

    Peter

    Nachtrag: Ohne es schon probiert zu haben, fällt mir was auf. Ich zeige in dem "Header zweite Seite" die Seitenanzahl an. Seite 1 von nn. Das wird aber im "Header Erste Seite" nicht funktionieren, weil meines Wissens das "Seite 1 von nn" nur in einem PageHeader funtkioniert und ich im Detailbereich nicht auf diese Variable abfragen kann. Aber ich baue es erst mal nach und sehe dann weiter.


    Sql Server 2008 R2 Business Intelligence Development Studio Visual Basic 2010 Express Excel 2010


    • Bearbeitet Peter01 Freitag, 30. März 2012 10:50
    Freitag, 30. März 2012 10:43
  • Hallo Olaf

    Nach dem ich es jetzt geprüft habe, ist es so wie in meinem Posting vom 30.März 2012 10:43 Uhr NACHTRAG beschrieben.

    Alternativ sehe ich eine Möglichkeit darin, das man abhängig von der Seitenzahl die  Pageheader Höhe verändert.

    so in etwa:

    Wenn AktiveSeitenAnzahl > 1 dann Pageheader.height = 0,5 cm

    sonst Pageheader.height = 3,5 cm

    Aber ich weiss nicht wo ich diesen Ausdruck plazieren soll. In den eigenschaften des HeaderPage kann man die Höhe ändern aber nicht aufgrund eines Ausdrucks. Hast Du da einen Tip?

    lG. Peter


    Sql Server 2008 R2 Business Intelligence Development Studio Visual Basic 2010 Express Excel 2010

    Montag, 2. April 2012 06:55
  • Hallo Peter,

    die Höhe des Headers kann man nicht dynamisch anpassen, man kann dort keinen Ausdruck angeben.

    Du weist schon, das "Seite 1 von n" ein Performanz-Killer sein kann, da SSRS zum Ermitteln der Gesamtanzahl gleich alle Seiten vollständig durchrendern muss? Sonst wird nämlich zur schnellen Anzeige zunächst nur die ersten Seiten gerendert, die restlichen erst bei Bedarf.

    Es gäbe noch den PageFooter, wo Du die Seitenanzahl anzeigen kannst, aber ich nehme an, das kommt nicht in Frage?

    Sonst könntest Du im ersten PageHeader den statischen Text "Seite 1 von vielen" ausgeben (ha, ha); eine bessere Lösung habe ich dafür auch nicht.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Montag, 2. April 2012 15:55
  • Hallo Olaf

    Ja das mit der Performace weiss ich, aber es ist so gewünscht. Tja! Pagefooter kommt nicht in Frage. Bis jetzt :-) I'ch glaube das werd ich mal durchsetzen.

    "Seite 1 von vielen" selten so gelacht :-)) Doch, Du hast mir sehr geholfen. Denn auch Dinge ausschliessen zu können ist eine große Hilfe.

    lG Peter


    Sql Server 2008 R2 Business Intelligence Development Studio Visual Basic 2010 Express Excel 2010

    Dienstag, 3. April 2012 05:32
  • Mittwoch, 4. April 2012 13:57