Zuletzt bearbeitet vor einem Jahr
von Daniel Quathamer

Abfragemakros (einschl. Schleifen u. Grafiken): Unterschied zwischen den Versionen

Zeile 209: Zeile 209:




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. {{Feld|[[Abfragemakros (einschl. Schleifen u. Grafiken)#Makro-Schachtelung|Makro-Schachtelung]] hi}}
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).}}
{{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).}}

Version vom 15. Februar 2022, 09:39 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:

Ergebnistabelle eines Makroberichtes

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.

Bearbeitungsformular eines Makroberichtes


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.

attention.svg Die Feldart eines bestimmten Feldes muss im Makrobericht und den Unterberichten übereinstimmen.

Auswahlmaske eines Makroberichtes

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:

Verarbeitung der Auswahlfelder in einem Makrobericht

Ein Negativbeispiel sähe dagegen so aus:

Verarbeitung der Auswahlfelder in einem Makrobericht (Negativbeispiel)

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).

attention.svg Makroberichte laufen nur im XML-Frontend.

Einen Makrobericht erstellen

Um einen Makrobericht zu erstellen wird eine Maske kopiert (AdministrationMasken verwaltenMaske 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".

Makrobericht bei Kopie erstellen

Um weitere "Unterabfragen" hinzuzufügen wird der Makrobericht über AdministrationMasken verwaltenMaske suchen gesucht. Dort findet sich ein Bearbeitungsbutton für die Makro-Zuordnung.

Bearbeitungsbutton für die Makro-Zuordnung

Mit einem Klick auf den Bearbeitungsbutton öffnet sich das Bearbeitungsformular.

Bearbeitungsformular für die Makro-Zuordnung

Hier werden dem Makrobericht die "Unterabfragen" zugeordnet, welche vom diesem ausgeführt werden.

Bearbeitungsformular für die Makro-Zuordnung

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

Bearbeitungsformular für die Makro-Zuordnung

Die Tabelle macro_masken_bez füllen

Es gibt eine weitere Möglichkeit einen Makrobericht zu erstellen und zu verwalten. Über den Pfad AdministrationTabelle suchen wird nach der Tabelle macro_masken_bez gesucht.

Tabelle macro_masken_bez suchen

Mit einem Klick auf den Bearbeiten-Button wird das Bearbeitungsformular geöffnet.

Tabelle macro_masken_bez bearbeiten

Ü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.

Das Bearbeitungsformular der Tabelle macro_masken_bez

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.

attention.svg Um die Schleifenfunktion auf einen ganzen Makrobericht anzuwenden, wird ein übergeordnetes Makro angelegt und das Prinzip der Makro-Schachtelung genutzt (vgl. Abschnitt 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:

Bearbeitungsformular macro_feld_wert öffnen

Dort werden die angesprochenen Felder befüllt:

Bearbeitungsformular macro_feld_wert

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

Relation von Hörerstatus

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.