Menü

Die Abfolge der Ereignisse bei doppeltem Durchlauf
(Pascal-Script)

Zurück | Ebene zurück

Sind im Bericht Unterberichte vorhanden, so enthalten diese dieselbe Ereignisstruktur wie der Hauptbericht. Ist im Unterbericht wieder ein Unterbericht setzt sich das also rekursiv fort bis zum untersten Unterbericht. Natürlich wird auch im Unterbericht doppelt durchlaufen.
Angenommen wir haben einen Unterbericht im Detailbereich (alles was fett gedruckt ist gehört zum Unterbericht, Seitenstil (PageStyle), Titel (Title) und Zusammenfassung (Summary) wurden hier aus Gründen der Übersichtlichkeit weggelassen):

Report BeforePrint
Report OnStartFirstPass
Report OnStartPage

 	Header BeforePrint
  	Header BeforeGenerate
   	Header AfterGenerate
    	Header AfterPrint

  	  	Detail BeforePrint
    	    	Detail BeforeGenerate
SubReport BeforePrint
SubReport OnStartFirstPass
SubReport OnStartPage

    	Header BeforePrint
    	Header BeforeGenerate
    	Header AfterGenerate
    	Header AfterPrint

        	   	Detail BeforePrint
    	  	Detail BeforeGenerate
    	   	Detail AfterGenerate
    	    	Detail AfterPrint

    	Footer BeforePrint
    	Footer BeforeGenerate
    	Footer AfterGenerate
    	Footer AfterPrint

SubReport OnEndPage
SubReport OnEndFirstPass

SubReport OnStartSecondPass
SubReport OnStartPage

    	Header BeforePrint
    	Header BeforeGenerate
    	Header AfterGenerate
    	Header AfterPrint

        	   	Detail BeforePrint
    	  	Detail BeforeGenerate
    	   	Detail AfterGenerate
    	    	Detail AfterPrint

    	Footer BeforePrint
    	Footer BeforeGenerate
    	Footer AfterGenerate
    	Footer AfterPrint

SubReport OnEndPage

SubReport AfterPrint
    	    	Detail AfterGenerate
    	    	Detail AfterPrint

    	Footer BeforePrint
    	Footer BeforeGenerate
    	Footer AfterGenerate
    	Footer AfterPrint

Report OnEndPage
Report OnEndFirstPass

Report OnStartSecondPass

Report OnStartPage

 	Header BeforePrint
  	Header BeforeGenerate
   	Header AfterGenerate
    	Header AfterPrint

  	  	Detail BeforePrint
    	    	Detail BeforeGenerate
SubReport BeforePrint
SubReport OnStartFirstPass
SubReport OnStartPage

    	Header BeforePrint
    	Header BeforeGenerate
    	Header AfterGenerate
    	Header AfterPrint

        	   	Detail BeforePrint
    	  	Detail BeforeGenerate
    	   	Detail AfterGenerate
    	    	Detail AfterPrint

    	Footer BeforePrint
    	Footer BeforeGenerate
    	Footer AfterGenerate
    	Footer AfterPrint

SubReport OnEndPage
SubReport OnEndFirstPass

SubReport OnStartSecondPass
SubReport OnStartPage

    	Header BeforePrint
    	Header BeforeGenerate
    	Header AfterGenerate
    	Header AfterPrint

        	   	Detail BeforePrint
    	  	Detail BeforeGenerate
    	   	Detail AfterGenerate
    	    	Detail AfterPrint

    	Footer BeforePrint
    	Footer BeforeGenerate
    	Footer AfterGenerate
    	Footer AfterPrint

SubReport OnEndPage

SubReport AfterPrint
    	    	Detail AfterGenerate
    	    	Detail AfterPrint

    	Footer BeforePrint
    	Footer BeforeGenerate
    	Footer AfterGenerate
    	Footer AfterPrint

Report OnEndPage

Report AfterPrint

Auf diese Art und Weise werden alle Ereignisse von Unterberichten immer zwischen „BeforeGenerate“ und „AfterGenerate“ des übergeordneten Bereichs eingefügt. Das muss nicht zwingend im Detailbereich sein, kann also auch im Kopf oder Fuß sein.
Nachdem der Unterbericht abgearbeitet ist, geht es an der Stelle im übergeordneten Bericht weiter, wo in den Unterbericht gesprungen wurde.