Zeile 211: | Zeile 211: | ||
Im Makro 10800 wird der Bericht Stud. Allg (10050) aufgerufen. Da das Feld {{Feld|schleifenrelation}} gefüllt ist, wird der <<SQL>> ausgeführt und Stud. Allg. (10050) mehrmals entsprechend der Anzahl gefundener Einträge ausgeführt. Dabei wird immer ein Eintrag in das Feld mit dem {{Feld|schleifenfeldnamen}} Org. Einheit eingesetzt. | Im Makro 10800 wird der Bericht Stud. Allg (10050) aufgerufen. Da das Feld {{Feld|schleifenrelation}} gefüllt ist, wird der <<SQL>> ausgeführt und Stud. Allg. (10050) mehrmals entsprechend der Anzahl gefundener Einträge ausgeführt. Dabei wird immer ein Eintrag in das Feld mit dem {{Feld|schleifenfeldnamen}} Org. Einheit eingesetzt. | ||
{{Achtung|Um die Schleifenfunktion auf einen ganzen Makrobericht anzuwenden, wird ein übergeordnetes Makro angelegt und das Prinzip der Makro-Schachtelung genutzt (vgl. Abschnitt Makro-Schachtelung [[Abfragemakros (einschl. Schleifen u. Grafiken)#Makro-Schachtelung | {{Achtung|Um die Schleifenfunktion auf einen ganzen Makrobericht anzuwenden, wird ein übergeordnetes Makro angelegt und das Prinzip der Makro-Schachtelung {{!}} genutzt (vgl. Abschnitt Makro-Schachtelung [[Abfragemakros (einschl. Schleifen u. Grafiken)#Makro-Schachtelung{{!}}Makro-Schachtelung]]).}} | ||
=Spezielle Auswahlwerte hinterlegen= | =Spezielle Auswahlwerte hinterlegen= |
Version vom 15. Februar 2022, 10:20 Uhr
Makros sind Abfragen, die mehrere andere Abfragen hintereinander ablaufen lassen. Welche Einzelabfragen ein Makro ausführen soll, wird in die Tabelle macro_masken_bez eingetragen:
Feld | Beschreibung |
---|---|
maskeninfo_id1 | maskeninfo-tid des Makros |
maskeninfo_id2 | maskeninfo-tid deder Einzelabfrage |
active | 1 oder 0 um ggf. zu deaktivieren |
sortnr | Reihenfolgebestimmung der Durchführung |
Beispiel:
maskeninfo_id1 | maskeninfo_id2 | active | sortnr |
---|---|---|---|
160660 | 160680 | 1 | 1 |
160660 | 160700 | 1 | 2 |
Das Makro 160660 führt die Einzelabfragen 160680 und 160700 hintereinander aus. Dabei wird der Bericht 160680 zuerst ausgeführt, da er die kleinere sortnr besitzt.
Hinter der ID 160660 steckt der Makrobericht "Validierung Studierende". Dieser führt zunächst den Bericht "Validierung Studierende (HisInOne)" (ID: 160680) und anschließend den Bericht "Validierung Studierende (BI)" (ID: 160700) aus:
Der Bericht dient dem Abgleich der Studierendenzahlen in den HisInOne-Vorsystemen mit denen in der SuperX-BI.
Das „select_stmt" eines Makros wird nicht benutzt.
Die Auswahlfelder der Auswahlmaske eines Makroberichtes sind allerdings sehr bedeutend. Denn die Einträge in den Auswahlfeldern dieser einen Auswahlmaske werden für alle Unterberichte verwandt.
![]()
Die Feldart eines bestimmten Feldes muss im Makrobericht und den Unterberichten übereinstimmen. Für dieses konkrete Beispiel bedeutet das, dass die Eingaben in den Feldern Art, Semester, Status, Hörerstatus und Matrikelnummer sowohl im Unterbericht "Validierung Studierende (HisInOne)", als auch im Bericht "Validierung Studierende (BI)" verarbeitet werden. Das wird entsprechend in beiden Unterberichten berücksichtigt:
Ein Negativbeispiel sähe dagegen so aus:
Bei diesem Negativbeispiel wird im Unterbericht 2 <<Seit Semester>> und <<Bis Semester>> erwartet. Da in der Auswahlmaske aber das Feld Semester gefüllt wird, wird dem Unterbericht 2 nichts übergeben. Daher gilt es, alle Unterberichte eines Makroberichtes so zu gestalten, dass die Einträge in den Auswahlfeldern sich auf diese auswirken. Es ist jedoch auch möglich, für bestimmte Unterberichte die Auswahlwerte unabhängig von der Auswahlmaske des Makroberichtes festzulegen (s. Abschnitt Spezielle Auswahlwerte hinterlegen).
![]() |
Makroberichte laufen nur im XML-Frontend. |
Einen Makrobericht erstellen
Um einen Makrobericht zu erstellen wird eine Maske kopiert (Administration→Masken verwalten→Maske kopieren), welche "Unterabfrage" des Makroberichtes wird. In der Auswahlmaske wird über das Feld Als Makro abgefragt, ob es sich bei dem neuen Bericht um einen Makrobericht handeln wird. Falls 'ja' gewählt ist, wird automatisch ein neuer Datensatz in macro_masken_bez angelegt. Der neue Bericht wird zum Makrobericht und der kopierte Bericht zum ersten "Unterbericht".
Um weitere "Unterabfragen" hinzuzufügen wird der Makrobericht über Administration→Masken verwalten→Maske suchen gesucht. Dort findet sich ein Bearbeitungsbutton für die Makro-Zuordnung.
Mit einem Klick auf den Bearbeitungsbutton öffnet sich das Bearbeitungsformular.
Hier werden dem Makrobericht die "Unterabfragen" zugeordnet, welche vom diesem ausgeführt werden.
Ebenso wird die Sortiernummer eingetragen, welche die Reihenfolge festlegt, in welcher die "Unterberichte" vom Makrobericht ausgeführt werden. Zur Funktion von schleifenrelation und schleifenfeldname siehe Abschnitt Schleifenfunktion
Die Tabelle macro_masken_bez füllen
Es gibt eine weitere Möglichkeit einen Makrobericht zu erstellen und zu verwalten. Über den Pfad Administration→Tabelle suchen wird nach der Tabelle macro_masken_bez gesucht.
Mit einem Klick auf den Bearbeiten-Button wird das Bearbeitungsformular geöffnet.
Über das Bearbeitungsformular werden maskeninfo_id1, maskeninfo_id2, active, sortnr erfasst und nach dem Speichern ein neuer Datensatz in der Tabelle macro_masken_bez angelegt.
Makros und Sichten
Wenn in den Submasken eines Makros verschiedene Sichten benutzt werden, müssen auf der Hauptmaske alle in den Untermasken benötigten Sichten auswählbar sein. Sonst gelten ggfs. vorgenommene Standänderungen nur für die Sichten der Hauptmaske nicht für die der Untermasken. Alternativ müsste man prüfen, ob Sichten von der Hauptmaske (Organigramm-Sicht) ihren Stand auch auf alle Sichten in den Untermasken übertragen, die von der gleichen Art sind (wahrscheinlich eher gefährlich).
Makro-Schachtelung
Makros können geschachtelt werden. Das bedeutet, dass ein Makro von einem anderen Makro, quasi als Untermakro, aufrufbar ist. Für ein Statistikheft könnte man dann einzelne Makros zu den Abschnitten des Hefts erstellen und testen und später dann ein „Mastermakro" für das ganze Heft.
maskeninfo_id1 | maskeninfo_id2 | active | sortnr |
---|---|---|---|
160660 | 160680 | 1 | 1 |
160660 | 160700 | 1 | 2 |
108000 | 160660 | 1 | 1 |
108000 | 108100 | 1 | 2 |
In diesem Fall würde das Makro 108000 zunächst das Makro 160660 als Untermakro und anschließend den Bericht 108100 als Unterbericht ausführen.
Schleifenfunktion
Makros lassen sich bei Bedarf automatisch mehrmals ausführen, z. B. für alle Lehreinheiten. Dazu werden mindestens die Felder schleifenrelation und schleifenfeldname, sowie unter gegebenen Umständen die Felder schleifenfstand und schleifenfsicht gefüllt.
Feld | Beispiel | Kommentar |
---|---|---|
maskeninfo_id1 | 10800 | |
maskeninfo_id2 | 10050 | |
active | 0 / 1 | 0 zum deaktivieren |
sortnr | 1 | |
schleifenrelation | <<SQL>> select key_apnr,name from organigramm where lehre=1 and orgstrukur=30 order by 2 | |
schleifenfeldname | Org. Einheit | |
schleifenfstand | 1.1.2005 oder <<Org. Einheit-Stand>> oder <<today>> | falls das schleifenfeld einen Stand benötigt |
schleifenfsicht | 13 oder <<Org. Einheit-Sicht>> | falls das schleifenfeld Sichten unterstützt (art=12) und mehr als eine Sicht zur Auswahl steht, muss die gewünschte Sicht (tid) angegeben werden |
aktion |
Im Makro 10800 wird der Bericht Stud. Allg (10050) aufgerufen. Da das Feld schleifenrelation gefüllt ist, wird der <<SQL>> ausgeführt und Stud. Allg. (10050) mehrmals entsprechend der Anzahl gefundener Einträge ausgeführt. Dabei wird immer ein Eintrag in das Feld mit dem schleifenfeldnamen Org. Einheit eingesetzt.
![]() |
Um die Schleifenfunktion auf einen ganzen Makrobericht anzuwenden, wird ein übergeordnetes Makro angelegt und das Prinzip der Makro-Schachtelung | genutzt (vgl. Abschnitt Makro-Schachtelung Makro-Schachtelung). |
Spezielle Auswahlwerte hinterlegen
Die Tabelle macro_feld_wert ermöglicht es, für bestimmte Feldern einzelner Masken separate Auswahlwerte zu hinterlegen. Man stelle sich beispielsweise ein Makro mit 4 Studierendenabfragen vor. Standardmäßig wird die Zahl der Haupthörer ausgegeben, bei einem Bericht allerdings werden Nebenhörer ausgewählt.
maskeninfo_id1 | maskeninfo_id2 | active | sortnr |
---|---|---|---|
10600 | 10070 | 1 | 1 |
10600 | 10100 | 1 | 2 |
10600 | 10130 | 1 | 3 |
10600 | 10160 | 1 | 4 |
Der Unterbericht 10160 soll nur Nebenhörer ausgeben. Dazu wird für diesen Unterbericht ein Datensatz in der Tabelle macro_feld_wert angelegt:
macro | sortnr | feldname | value |
---|---|---|---|
10600 | 4 | Hörerstatus | hrst='N' |
In der Spalte macro wird die id des Makroberichtes angegeben. In der Spalte sortnr die Sortiernummer des Unterberichtes für welchen der unabhängige Feldwert übergeben wird. feldname enthält den Namen des Feldes, welches im Unterbericht manipuliert wird und value den zu übergebenden Wert.
Zur Bearbeitung der Tabelle macro_feld_wert wird ein Bearbeitungsformular bereitgestellt. Über "Maske suchen" wir zunächst der Makrobericht gesucht. Anschließend wird mit einem Klick auf den entsprechenden Bearbeiten-Button das Bearbeitungsformular geöffnet:
Dort werden die angesprochenen Felder befüllt:
Die Werte value werden exakt so eingetragen, wie der SQL in der relation-Spalte des zugehörigen Feldes sie liefert. Z. B. steht für das Feld Hörerstatus in relation:
<<SQL>> select apnr, eintrag from hoererstatus order by 2
Der SQL liefert
apnr eintrag 1=1 alle hrst='F' besonderer Gasthörer ... ... hrst='N' Nebenhörer ... ... Daher wird als value in macro_feld_wert hrst='N' für Nebenhörer übergeben.