Bericht: In Detailband auf aufrufendes Objekt zugreifen

Problemstellung:

In einem Bericht soll folgendes dargestellt werden:

  • Anmeldung auf Anlass A

  • Alle Anmeldungen der gleichen Person auf die Anlässe B - D, welche eine Anlassverbindung zu Anlass A haben.

 

Konkret:

Es gibt einen Lehrgang “Mathe”, darauf sind Studierende angemeldet.

Dieser Lehrgang hat via Anlassverbindung 3 Module verknüpft auf welche die gleichen Studierenden angemeldet sind.

  • Algebra

  • Geometrie

  • Statistik

Der Bericht soll nun aufgerufen werden von der Anmeldung auf den Lehrgang “Mathe”. Im Bericht soll einerseits der Lehrgang “Mathe” sichtbar sein, andererseits die Anmeldung auf die 3 verknüpften Module

 

Beispiel:

  • Anmeldung auf Lehrgang Mathe - Student Max Muster

    • Anmeldung auf Modul Algebra - Student Max Muster

    • Anmeldung auf Modul Geometrie - Student Max Muster

    • Anmeldung auf Modul Statistik -Student Max Muster

 

Sobald ich im Bericht vom Lehrgang über die Anlassverbindung auf die Subanlässe (Module) navigiere “verliere” ich die Information der Lehrgangsanmeldung. Ich kann also zwar von den Modulen alle Anmeldungen anzeigen, aber einschränken auf die Anmeldung, mit der der Bericht aufgerufen wurde, geht nicht.

 

Lösung:

s.

  • Ich erstelle erst auf dem Bericht einen Parameter, z.B. cstPersonId in der Liste der Felder, und nur dort.

 

image-20240829-092631.png

 

  • Nun erstelle ich im obersten Detail des Berichts ein BeforePrint Script

    image-20240829-092832.png

    Im Script muss folgender Code mit dem Parameternamen angegeben werden:
    DetailBand drb = (DetailBand)sender; this.Parameters["cstPersonId"].Value = Convert.ToInt32(GetCurrentColumnValue("PersonId"));

 

 

Dabei ist cstPersonId der Name des zuvor erstellten Parameters. PersonId ist der Name des Feldes, welches in den Parameter geschrieben werden soll.

 

  • Nun kann auf dem entsprechenden Subreport die Einschränkung erstellt werden:

Ein Detailbericht findet sich hier: