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. Report filter child report based on parent property
Ich erstelle erst auf dem Bericht einen Parameter, z.B. cstPersonId in der Liste der Felder, und nur dort.
Nun erstelle ich im obersten Detail des Berichts ein BeforePrint Script
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: