Tomcat: Pagebreak nach 10 Datensätzen? Überhaupt möglich?

Guten Morgen Forumer,

bis jetzt war ich in diesem Forum größtenteils nur "stummer" Leser, weil meine Fragen immer durch andere Postings beantwortet worden sind. Nun komme ich aber trotz reichlich Stöbern nicht weiter und hoffe auf eure Hilfe.

Also, das Thema "druckbare Version" wurde ja schon des öffteren hier behandelt. Aber, wie ich bis jetzt feststellen konnte, nur für statische Seiten (korrigiert mich bitte, wenn ich etwas übersehen habe).

Ich möchte eine druckbare Version einer ASP Seite die mir eine unbekannte Anzahl von Datensätze auflistet. Mein Gedanke war jetzt: "Drucke die gesamten Ergebnisse einmal aus, zähle dann die "Datensatzanzahl" auf der ersten Seite und bestimme die Anzahl der Datensätze, die pro Seite angezeigt werden sollen. Ich habe mich mit dem ganzen Design auf der Seite für 10 Datensätze pro Seite entschieden.

Soweit so gut. Wie bekomme ich es aber nun hin, daß überhaupt ein Seitenumbruch an den Drucker gesendet wird? Dazu bin ich wiedereinmal hier im Forum fündig geworden (Pagebreak) und das klappte auch.
Nun noch "schnell" die Datensätze mit einer "if..else.." Klausel (nach jedem 10. Datensatz den Pagebreak Befehl einfügen lassen) zählen lassen und...Pustekuchen....

Grundsätzlich klappte es auch. Ich bekam meine Seitenumbrüche. Nur leider nicht an der Stelle, an der sie sein sollten. Die Seitenumbrüche kommen am Anfang (leere Seiten) und das Ergebnis der DB Abfrage kommt am Schluß (hier ohne Seitenumbruch). Kommt wahrscheinlich daher, daß der Server die DB Abfrage abarbeitet und dem Browser schickt und der Browser vorher den Seitenbrüche...bzw. umgekehrt...;-)

Nun meine Frage: Gibt es eine Möglichkeit das entweder der Server die Seitenumbrüche per ASP macht oder der Browser die an ihn gesannte Seite entsprechend "umwandelt"? Oder liege ich völlig falsch und meine Idee klappt überhaupt nicht...?!?!? Oder liegt der Ansatzpunkt für mein Vorhaben woanders?

Vielen Dank auf alle Fälle für eure Hilfe im voraus,

Tomcat

  1. Hi,

    bis jetzt war ich in diesem Forum größtenteils nur "stummer" Leser, weil meine Fragen immer durch andere Postings beantwortet worden sind.

    ich danke Dir. Ab und zu tut eine Bestätigung ganz gut, dass das Archiv tatsächlich auch genutzt wird.

    Also, das Thema "druckbare Version" wurde ja schon des öffteren hier behandelt. Aber, wie ich bis jetzt feststellen konnte, nur für statische Seiten (korrigiert mich bitte, wenn ich etwas übersehen habe).

    Du hast übersehen, dass der Browser (bzw. Client) zwischen einer statischen und einer generierten Seite keinen Unterschied kennt. Er bekommt HTML- und CSS-Code, mehr nicht. Ob da jemals ASP oder sonstwas im Spiel war, ist ohne jedwede Relevanz.

    Nun noch "schnell" die Datensätze mit einer "if..else.." Klausel (nach jedem 10. Datensatz den Pagebreak Befehl einfügen lassen) zählen lassen und...Pustekuchen....

    Ich nehme an, die Datensätze werden in einer Tabelle dargestellt? Beende diese doch mal, füge den Pagebreak ein (wieso eigentlich "Befehl"?), und wiederhole ggf. die Tabellenüberschrift.

    Grundsätzlich klappte es auch. Ich bekam meine Seitenumbrüche. Nur leider nicht an der Stelle, an der sie sein sollten. Die Seitenumbrüche kommen am Anfang (leere Seiten) und das Ergebnis der DB Abfrage kommt am Schluß (hier ohne Seitenumbruch).

    Wenn Du Texte o.ä. an der falschen Stelle der Tabelle einfügst - z.B. zwischen </tr> und <tr> - werden diese _vor_ der Tabelle dargestellt. Ich unterstelle, dass genau das gleiche hier passiert ist.

    Kommt wahrscheinlich daher, daß der Server die DB Abfrage abarbeitet und dem Browser schickt und der Browser vorher den Seitenbrüche...bzw. umgekehrt...;-)

    Nein, der Browser sieht nicht, was der Server da macht. Vermutlich (=in aller Regel) hat dieser seine Arbeit auch längst beendet, bevor der Browser die Seite erhalten hat.

    Nun meine Frage: Gibt es eine Möglichkeit das entweder der Server die Seitenumbrüche per ASP macht oder der Browser die an ihn gesannte Seite entsprechend "umwandelt"?

    Vergiss bei allem, was clientseitig passieren soll, ASP. Baue Dir eine statische Seite, die so funktioniert, wie Du es Dir vorstellst - und sorge in ASP dafür, dass genau diese Seite erzeugt wird.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. ich danke Dir. Ab und zu tut eine Bestätigung ganz gut, dass das Archiv tatsächlich auch genutzt wird.

      Gern geschehen..;-)

      Wenn Du Texte o.ä. an der falschen Stelle der Tabelle einfügst - z.B. zwischen </tr> und <tr> - werden diese _vor_ der Tabelle dargestellt. Ich unterstelle, dass genau das gleiche hier passiert ist.

      Es lag tatsächlich am Tabellenaufbau. Nachdem ich die Tags umgestellt hatte, machte die Seite, was ich wollte.

      Hast Du vielleicht noch eine Idee, wie ich das elegant mit dem zählen bzw. mit dem berechnen der Seiten/Datensätze lösen kann? Im Moment machen ich das so:

      <% i = 1
      .
      .
      i = i + 1 %>

      Und weiter unten:

      <% if i = 10 then %>
      --> Pagebreak
      <% elseif i = 20 then %>
      --> Pagebreak
      u.s.w.

      Anfänglich war es die einfachste/bequemste Lösung. Aber im nachhinein stellte sich heraus, daß ich folgendes nicht kontrollieren kann:

      Ich weiß nicht, wieviele Seite es nun jetzt/später werden. D. h. wenn ich z. B. <% elseif i = 120 then %> habe und i = 140 ist, funzt das ganze nicht mehr. Oder ich trage es manuell nach.

      Ich habe schon hin und her gerechnet, die wildesten Formeln aufgestellt aber irgendwie schaffe ich es nicht, einen variablen Wert zu ermitteln, der sich durch die Anzahl der Datensätze ergibt.

      Hast Du da einen Lösungsansatz oder eine Idee?

      Grüßli

      Tomcat

      1. Hallo Tomcat,

        <% i = 1
        .
        .
        i = i + 1 %>

        Und weiter unten:

        <% if i = 10 then %>
        --> Pagebreak
        <% elseif i = 20 then %>
        --> Pagebreak
        u.s.w.
        Hast Du da einen Lösungsansatz oder eine Idee?

        Frage den Rest bei der Division durch 10 ab:
        <% if i mod 10 = 0 then %>

        Alternativ kannst Du auch wenn i=10 ist i wieder auf 1 zurücksetzen.

        Grüße
        Andreas

        1. @ Cheatah & Andreas

          Ihr könnt es gerade nicht sehen aber ich verneige mich vor meinem Bildschirm mit euren Namen drauf.

          Vielen herzlichen Dank !!! Es klappt genau so wie ich es mir vorgestellt hatte.

          Noch eine kurze Frage: Gibt es irgendwo eine Referenz, wo ich (Be)Rechnungsgrundlagen nachlesen kann? Ich denke mal, der "Befehl" >mod< heißt so etwas wie "geteilt", oder? Und wenn es die hier auch gibt, unter welchen Stichwörtern kann ich suchen?

          MfG
          Tomcat

          1. Hi,

            Noch eine kurze Frage: Gibt es irgendwo eine Referenz, wo ich (Be)Rechnungsgrundlagen nachlesen kann?

            klar: das Mathestudium Deiner Wahl ;-)

            Ich denke mal, der "Befehl" >mod< heißt so etwas wie "geteilt", oder?

            Modulo ist eine Teilungsrestberechnung; oft wird als Rechensymbol auch das % benutzt. So ist also 42%10=2, weil 42=4*10+2.

            Du hast übrigens gerade gelernt, warum Mathe einen immensen Teil des Informatikstudiums ausmacht. Modulo ist zwar nur "etwas mehr" als das Anwenden von Grundrechenarten; aber letztlich ist alles, was mit Informatik und insbesondere auch dem Programmieren zu tun hat, voll von Mathematik.

            Cheatah

            --
            X-Will-Answer-Email: No