OBS Log Datenaufbereitung und Zuteilung

zurück: Schritt 2: Belegwünsche aufbereiten

Schritt 3: Zuteilungsverfahren

Vereinfachte Kurzfassung:

Die Reihenfolge zwischen verschiedenen Studierenden wird durch den Rang bestimmt. Im Rang sind unter anderem Studiengang und Fachsemester berücksichtigt. Innerhalb desselben Rangs wird die Reihenfolge anhand der bereits zugeteilten Stundensumme und (bei gleicher Stundensumme) durch eine Zufallszahl ermittelt.

Die vom Studierenden gewählte Priorität definiert lediglich die Reihenfolge, in der die einzelnen Belegwünsche dieses Studierenden zugeteilt werden, wenn er an der Reihe ist. Insofern bedeutet "niedrigste Priorität" nur, dass eine Veranstaltung auf dem Wunschzettel des Studierenden ganz nach hinten rutscht, jedenfalls aber keinen Nachteil gegenüber anderen Studierenden.

Innerhalb jedes Rangs werden die Belegwünsche in mehreren Durchgängen bearbeitet, bis alle zugeteilt oder abgewiesen sind. In jedem Durchgang bekommt jeder Studierende maximal 1 Zuteilung; verbleibende Belegwünsche kommen in den nächsten Durchgang. Für jeden Durchgang wird die Reihenfolge der Studierenden innerhalb des aktuellen Rangs neu gewürfelt und aufsteigend nach bereits zugeteilter Stundensumme und dann nach Zufallszahl sortiert.

[17.04.2020 10:41:41]

Initialisiere Tabelle [Student]
Ergänze fehlende [WochentageMaximal]UPDATE Student

SET WochentageMaximal = 7

WHERE (WochentageMaximal Is Null) OR (WochentageMaximal<1) OR (WochentageMaximal>7);

Wandele [WochentageAusschluss] in TerminSet-Format umCursor: Function Nf_WochentageAusschlussUmformen

SELECT [WochentageAusschluss], [_WochentageAusschluss]

FROM Student;

Ergänze fehlende [WPStundenMaximal]UPDATE Student

SET WPStundenMaximal = 999

WHERE (WPStundenMaximal Is Null) OR (WPStundenMaximal<1);

Begrenze zu große [WPStundenMaximal]UPDATE Student INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg)

SET Student.WPStundenMaximal = [_Konfiguration SPO].[WP-Stunden]+3

WHERE Student.WPStundenMaximal>[_Konfiguration SPO].[WP-Stunden]+3;

Setze fehlende [FachSemester] auf 5UPDATE Student

SET FachSemester = 5

WHERE FachSemester Is Null;

Setze fehlende [Teilzeit] auf 100%UPDATE Student

SET Teilzeit = 100

WHERE Teilzeit Is Null;

Lösche fehlende [AlltimeWPStunden]UPDATE Student

SET AlltimeWPStunden = 0

WHERE AlltimeWPStunden Is Null;

Ermittle [_WPimRegelablauf]UPDATE Student INNER JOIN [_Konfiguration SPO]
ON Student.stg = [_Konfiguration SPO].stg AND Student.[Pruefungsordnung] = [_Konfiguration SPO].[Prüfungsordnung]

SET Student.[_WPimRegelablauf] = InStr([_Konfiguration SPO].[WP Semester],Student.FachSemester)>0 And IIf(IsNull([_Konfiguration SPO].[Praxis-Semester]), True, IIf(IsNull(Student.inPraxisphase), False, InStr([_Konfiguration SPO].[Praxis-Semester],Student.inPraxisphase)>0));

Initialisiere [_WPStundenSumme], [LVStundenSumme], [_alleZugeteiltenTermine]UPDATE Student

SET [_WPStundenSumme] = 0, LVStundenSumme = 0, [_alleZugeteiltenTermine] = '';

Übernimm [gesperrte Bloecke]UPDATE [gesperrte Bloecke] INNER JOIN Student
ON [gesperrte Bloecke].Matrikelnummer = Student.Matrikelnummer

SET Student.[_alleZugeteiltenTermine] = [gesperrte Bloecke].[_alleZugeteiltenTermine];

Lösche [_Vertiefung]UPDATE Student

SET [_Vertiefung] = Null;

Generiere neue [_Zufallszahl]en für StudentenCursor: Function Nf_ZufallszahlGenerieren

SELECT [_Zufallszahl]

FROM Student

ORDER BY Matrikelnummer;

Initialisiere Tabelle [Lehrangebot]
Initialisiere [freiePlaetze]UPDATE Lehrangebot

SET freiePlaetze = [verfuegbarePlaetze];

Lösche fehlende [imPaketBelegen]UPDATE Lehrangebot

SET imPaketBelegen = False

WHERE imPaketBelegen Is Null;

Berechne [_SWS] von Lehrangeboten (Anrechnung für Studenten)Cursor: Function Nf_SWS_Bestimmen

SELECT [SWS], [_SWS]

FROM Lehrangebot;

Lösche fehlende [Platzreservierung]UPDATE Lehrangebot

SET Platzreservierung = False

WHERE Platzreservierung Is Null;

Ermittle, ob Lehrveranstaltung [_hatPraktikumsgruppen]UPDATE Lehrangebot LEFT JOIN Praktikumsgruppe
ON Lehrangebot.LehrangebotID = Praktikumsgruppe.gehoertZuLehrangebotID

SET Lehrangebot.[_hatPraktikumsgruppen] = Not IsNull([Praktikumsgruppe]![gehoertZuLehrangebotID]);

Ermittle Nachfrage nach LehrveranstaltungenSELECT Lehrangebot.LehrangebotID, CLng((Count([belegt]![LehrangebotID])*100)/[Lehrangebot]![verfuegbarePlaetze]) AS Nachfrage

INTO [_tempNachfrage]

FROM Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID

WHERE (Lehrangebot.verfuegbarePlaetze>0)

GROUP BY Lehrangebot.LehrangebotID, Lehrangebot.verfuegbarePlaetze;

Trage Nachfrage in Lehrveranstaltungen einUPDATE Lehrangebot INNER JOIN _tempNachfrage
ON Lehrangebot.LehrangebotID = [_tempNachfrage].LehrangebotID

SET [_Nachfrage] = [_tempNachfrage]![Nachfrage];

Initialisiere Tabelle [Praktikumsgruppe]
Initialisiere [freiePlaetze]UPDATE Praktikumsgruppe

SET freiePlaetze = [verfuegbarePlaetze];

Ergänze fehlende [Paketnummer]UPDATE Lehrangebot INNER JOIN Praktikumsgruppe
ON Lehrangebot.LehrangebotID = Praktikumsgruppe.gehoertZuLehrangebotID

SET Praktikumsgruppe.Paketnummer = 50 + IIf(Vergabereihenfolge Is Null, 0, Vergabereihenfolge)

WHERE Paketnummer Is Null AND [_Paketfachgruppe] Is Not Null;

Lösche fehlende [_belastetAlltimeWPStunden]UPDATE belegt

SET [_belastetAlltimeWPStunden] = False

WHERE [_belastetAlltimeWPStunden] Is Null;

Initialisiere Tabelle [belegt]
vor Start in DB: [_eigenerStudiengang], [_richtigerSemesterZug], [_Vorholer], [_Nachholer]
Rette 'nur Vorlesung'UPDATE belegt

SET [_bearbeitetInRang] = 0

WHERE ZuteilungTermin = 'nur' AND ZuteilungRaum = 'Vorlesung';

Trage Anzahl der Belegungen für 'nur Vorlesung' einCursor: Function Nf_BelegeNurVorlesung

SELECT zuteilbareLehrangebotID, ZuteilungTermin, ZuteilungRaum, Count(Matrikelnummer) AS belegtePlaetze

FROM belegt

WHERE ZuteilungTermin Is Not Null AND ZuteilungRaum Is Not Null

GROUP BY zuteilbareLehrangebotID, ZuteilungTermin, ZuteilungRaum;

Initialisiere [ZuteilungTermin], [ZuteilungRaum], [GrundFuerNichtzuteilung], [_bearbeitetInRang]UPDATE belegt

SET ZuteilungTermin = Null, ZuteilungRaum = Null, GrundFuerNichtzuteilung = Null, [_bearbeitetInRang] = Null

WHERE [_bearbeitetInRang]<>0;

nicht zuteilen für TeststudentenUPDATE belegt INNER JOIN Student
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET GrundFuerNichtzuteilung = 'test', [_bearbeitetInRang] = 0

WHERE Student.HoererStatus = 'T' AND [_bearbeitetInRang] Is Null;

nicht zuteilen für GelöschteUPDATE belegt INNER JOIN Student
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET GrundFuerNichtzuteilung = 'gelöscht', [_bearbeitetInRang] = 0

WHERE Student.RueckmeldeStatus = 'L' AND [_bearbeitetInRang] Is Null;

nicht zuteilen für BeurlaubteUPDATE belegt INNER JOIN Student
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET GrundFuerNichtzuteilung = 'beurlaubt', [_bearbeitetInRang] = 0

WHERE Student.RueckmeldeStatus = 'B' AND [_bearbeitetInRang] Is Null;

nicht zuteilen wenn eine Note oder ein Testat bereits eingetragen istUPDATE belegt

SET GrundFuerNichtzuteilung = 'bestanden', [_bearbeitetInRang] = 0

WHERE Infocode Like '*N*' AND [_bearbeitetInRang] Is Null;

nicht zuteilen wenn das Praktikum bereits testiert istUPDATE belegt

SET GrundFuerNichtzuteilung = 'testiert', [_bearbeitetInRang] = 0

WHERE Infocode Like '*P*' AND [_bearbeitetInRang] Is Null;

nicht zuteilen wenn die Zulassungsvoraussetzung nicht erfüllt istUPDATE belegt INNER JOIN Student
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET GrundFuerNichtzuteilung = 'Zulassung fehlt', [_bearbeitetInRang] = 0

WHERE Infocode Like '*Z*' AND HoererStatus = 'H' AND [_bearbeitetInRang] Is Null;

kein Wechsel des MentorsUPDATE Student INNER JOIN (Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID)
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET belegt.GrundFuerNichtzuteilung = 'hat Mentor', belegt.[_bearbeitetInRang] = 0

WHERE Lehrangebot.Bezeichnung='Mentor' AND Student.hatMentor='1' AND belegt.[_bearbeitetInRang] Is Null;

Mentor nur für 1. und 2. Semester oder Wechsler; nicht für AustauschstudierendeUPDATE Student INNER JOIN (Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID)
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET belegt.GrundFuerNichtzuteilung = 'kein Erstsemester', belegt.[_bearbeitetInRang] = 0

WHERE Lehrangebot.Bezeichnung='Mentor' AND ((Student.FachSemester>2 AND Student.HoererStatus<>'W') OR Student.HoererStatus In ('A', 'N', 'V')) AND belegt.[_bearbeitetInRang] Is Null;

[_UeberschneidungVermeiden] für Wahlpflicht, Seminare, andere Fachbereiche, richtige Semester und VorholerUPDATE Student INNER JOIN (Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID)
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET [_UeberschneidungVermeiden] = ([_belegtAlsWahlpflicht]=True) OR ([_Lehrveranstaltungsart]='S') OR (NOT belegt.[_eigenerStudiengang]) OR (belegt.[_eigenerStudiengang] AND (belegt.[_Nachholer] = False));

Übernimm Original [Prioritaet] in Arbeitsvariable [_Prioritaet]UPDATE belegt

SET [_Prioritaet] = Prioritaet

WHERE (Prioritaet>0);

Setze fehlende [_Prioritaet] auf 999UPDATE belegt

SET [_Prioritaet] = 999

WHERE (Prioritaet Is Null) OR (Prioritaet=0);

Füge Zusagen zusammen (1)DELETE *

FROM [_Temp Zusage];

Füge Zusagen zusammen (2)INSERT

INTO [_Temp Zusage] SELECT *

FROM Zusage;

Füge Zusagen zusammen (3)INSERT

INTO [_Temp Zusage] (LehrangebotID, Matrikelnummer) SELECT [_Zusage manuell].LehrangebotID, [_Zusage manuell].Matrikelnummer

FROM [_Zusage manuell]

WHERE ([_Zusage manuell].Matrikelnummer Is Not Null) AND ([_Zusage manuell].Datum>Date()-30);

Setze [_hatZusage] auf True bei Zusagen von Dozenten; Zeitwünsche dann ignorierenUPDATE belegt INNER JOIN [_Temp Zusage]
ON (belegt.Matrikelnummer = [_Temp Zusage].Matrikelnummer) AND (belegt.LehrangebotID = [_Temp Zusage].LehrangebotID)

SET belegt.[_hatZusage] = True, belegt.[_Vorholer] = False, belegt.[_Nachholer] = False, belegt.[_richtigerSemesterZug] = True;

Ermittle den [_PaketUmfang] von BelegwünschenSELECT Lehrangebot.[_Paketfachgruppe], belegt.Matrikelnummer, Count(belegt.Matrikelnummer) AS PaketUmfang

INTO [_tempPaketUmfang]

FROM belegt INNER JOIN Lehrangebot
ON belegt.zuteilbareLehrangebotID = Lehrangebot.LehrangebotID

WHERE [_bearbeitetInRang] Is Null

GROUP BY Lehrangebot.[_Paketfachgruppe], belegt.Matrikelnummer

HAVING Lehrangebot.[_Paketfachgruppe] Is Not Null

ORDER BY Lehrangebot.[_Paketfachgruppe], Count(belegt.Matrikelnummer);

Übernimm [_PaketUmfang] in BelegwünscheUPDATE _tempPaketUmfang INNER JOIN (belegt INNER JOIN Lehrangebot
ON belegt.zuteilbareLehrangebotID = Lehrangebot.LehrangebotID)
ON ([_tempPaketUmfang].Matrikelnummer = belegt.Matrikelnummer) AND ([_tempPaketUmfang].[_Paketfachgruppe] = Lehrangebot.[_Paketfachgruppe])

SET belegt.[_PaketUmfang] = IIf(belegt.[_Prioritaet]<999 AND NOT belegt.[_richtigerSemesterZug],0,[_tempPaketUmfang].[PaketUmfang]);

Lösche Arbeitsvariable [_Wunschpartner] und [_WunschpartnerSortierung]UPDATE belegt

SET [_Wunschpartner] = Null, [_WunschpartnerSortierung] = Null;

Übernimm [Wunschpartner] in Arbeitsvariable [_Wunschpartner]UPDATE belegt INNER JOIN Lehrangebot
ON belegt.zuteilbareLehrangebotID = Lehrangebot.LehrangebotID

SET [_Wunschpartner] = Wunschpartner

WHERE (Wunschpartner Is Not Null) AND (Platzreservierung = True) AND ([_bearbeitetInRang] Is Null);

Lösche Ego-[_Wunschpartner]UPDATE belegt

SET [_Wunschpartner] = Null

WHERE ([_Wunschpartner]=[Matrikelnummer]);

Lösche nicht-Praktikums-[_Wunschpartner]UPDATE belegt INNER JOIN Lehrangebot
ON belegt.zuteilbareLehrangebotID = Lehrangebot.LehrangebotID

SET [_Wunschpartner] = Null

WHERE ([_Wunschpartner] Is Not Null) AND ([_hatPraktikumsgruppen]=False);

Erzwinge einheitliche [_Wunschpartner] im Paket (fehlende werden gegenseitig)Cursor: Function Nf_ErzwingeEinheitlicheWunschpartnerImPaket

SELECT [_Paketfachgruppe], Matrikelnummer, [_Wunschpartner]

FROM belegt INNER JOIN Lehrangebot
ON belegt.zuteilbareLehrangebotID = Lehrangebot.LehrangebotID

GROUP BY [_Paketfachgruppe], Matrikelnummer, [_Wunschpartner], [_PaketUmfang]

HAVING ([_Paketfachgruppe] Is Not Null) AND ([_Wunschpartner] Is Not Null) AND (Count([_Wunschpartner])<>[_PaketUmfang])

ORDER BY [_Paketfachgruppe], Matrikelnummer, Count([_Wunschpartner]) DESC;

Erzwinge einheitliche [_Wunschpartner] im PaketCursor: Function Nf_ErzwingeEinheitlicheWunschpartnerImPaket

SELECT [_Paketfachgruppe], Matrikelnummer, [_Wunschpartner]

FROM belegt INNER JOIN Lehrangebot
ON belegt.zuteilbareLehrangebotID = Lehrangebot.LehrangebotID

GROUP BY [_Paketfachgruppe], Matrikelnummer, [_Wunschpartner], [_PaketUmfang]

HAVING ([_Paketfachgruppe] Is Not Null) AND ([_Wunschpartner] Is Not Null) AND (Count([_Wunschpartner])<>[_PaketUmfang])

ORDER BY [_Paketfachgruppe], Matrikelnummer, Count([_Wunschpartner]) DESC;

Markiere Wunschpartner mit passendem BelegwunschUPDATE belegt INNER JOIN belegt AS belegtSub
ON (belegt.[_Wunschpartner] = belegtSub.Matrikelnummer) AND (belegt.zuteilbareLehrangebotID = belegtSub.zuteilbareLehrangebotID)

SET belegt.[_WunschpartnerSortierung] = 'ok'

WHERE (belegt.[_Wunschpartner] Is Not Null) AND (belegt.[_bearbeitetInRang] Is Null) AND (belegtSub.[_bearbeitetInRang] Is Null);

Lösche [_Wunschpartner] ohne passenden BelegwunschUPDATE belegt

SET [_WunschpartnerSortierung] = Null, [_Wunschpartner] = Null

WHERE ([_WunschpartnerSortierung] Is Null) AND ([_Wunschpartner] Is Not Null);

Vervollständige einseitige [_Wunschpartner]schaftenUPDATE belegt INNER JOIN belegt AS belegtWuP
ON (belegt.zuteilbareLehrangebotID = belegtWuP.zuteilbareLehrangebotID) AND (belegt.[_Wunschpartner] = belegtWuP.Matrikelnummer)

SET belegtWuP.[_Wunschpartner] = [belegt]![Matrikelnummer]

WHERE (belegtWuP.[_Wunschpartner] Is Null) AND (belegtWuP.[_bearbeitetInRang] Is Null);

Lösche verschmähte [_Wunschpartner]UPDATE belegt AS belegtSingle INNER JOIN belegt AS belegtWuP1
ON (belegtSingle.[_Wunschpartner] = belegtWuP1.Matrikelnummer) AND (belegtSingle.zuteilbareLehrangebotID = belegtWuP1.zuteilbareLehrangebotID)

SET belegtSingle.[_Wunschpartner] = Null

WHERE (((belegtWuP1.Matrikelnummer)<>[belegtSingle].[Matrikelnummer]) AND ((belegtWuP1.[_Wunschpartner])<>[belegtSingle].[Matrikelnummer]));

Bilde [_WunschpartnerSortierung]Cursor: Function Nf_BildeWunschpartnerSortierung

SELECT [Matrikelnummer], [_Wunschpartner], [_WunschpartnerSortierung]

FROM belegt

WHERE [_Wunschpartner] Is Not Null;

Ordne Wunschpartner nach [_PaketUmfang]Cursor: Function Nf_LoescheZweitenWunschpartner

SELECT [Matrikelnummer], [_Wunschpartner], [_WunschpartnerSortierung], [_PaketUmfang], [_richtigerSemesterZug], [zuteilbareLehrangebotID]

FROM belegt

WHERE [_WunschpartnerSortierung] Is Not Null

ORDER BY zuteilbareLehrangebotID, [_WunschpartnerSortierung], [_PaketUmfang] DESC, [_richtigerSemesterZug], Matrikelnummer;

Bestimme Vertiefungsrichtung aus belegter Pseudo-LVCursor: Function Nf_BestimmeVertiefungsrichtung

SELECT Student.[_Vertiefung], Lehrangebot.Belegnummer, belegt.ZuteilungTermin, belegt.GrundFuerNichtzuteilung, belegt.[_Prioritaet], Lehrangebot.verfuegbarePlaetze, Lehrangebot.freiePlaetze, belegt.[_bearbeitetInRang]

FROM Student INNER JOIN (Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID)
ON Student.Matrikelnummer = belegt.Matrikelnummer

WHERE Lehrangebot.FachBelegnummer = 'VertRich'

ORDER BY belegt.[_Prioritaet], Lehrangebot.Bezeichnung;

Lösche alle belegt.[_gehoertZuVertiefung]UPDATE belegt

SET [_gehoertZuVertiefung] = False;

Übernimm Student.[_Vertiefung] in belegt.[_gehoertZuVertiefung]UPDATE Student INNER JOIN (Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID)
ON Student.Matrikelnummer = belegt.Matrikelnummer

SET belegt.[_gehoertZuVertiefung] = True

WHERE Lehrangebot.LehrangebotID In
(SELECT LehrID

FROM MenueZuordnung INNER JOIN Menue
ON MenueZuordnung.MenuID=Menue.MenuID

WHERE Menue.Menue=Student.[_Vertiefung]) AND Lehrangebot.FachBelegnummer<>'VertRich';

Zuteilung
Zuteilung ohne [Platzreservierung]UPDATE Lehrangebot INNER JOIN belegt
ON Lehrangebot.LehrangebotID = belegt.LehrangebotID

SET belegt.ZuteilungTermin = IIf(IsNull([gemeinsameTermine]),'ok',[gemeinsameTermine]), belegt.[_bearbeitetInRang] = 0

WHERE Lehrangebot.Platzreservierung=False AND belegt.[_bearbeitetInRang] Is Null;

Lösche Mehrfachbelegungen ohne Platzreservierung zum selben ModulCursor: Function Nf_LoescheMehrfachbelegungOhnePlatzreservierung

SELECT belegt.Matrikelnummer, belegt.[_FachBelegnummer], belegt.LehrangebotID

FROM belegt INNER JOIN ( SELECT Matrikelnummer, [_FachBelegnummer]

FROM belegt

WHERE ZuteilungTermin Is Not Null

GROUP BY Matrikelnummer, [_FachBelegnummer]

HAVING Count(Matrikelnummer)>1 ) filter
ON belegt.Matrikelnummer = filter.Matrikelnummer AND belegt.[_FachBelegnummer] = filter.[_FachBelegnummer]

WHERE ZuteilungTermin Is Not Null AND [_bearbeitetInRang] = 0

ORDER BY belegt.Matrikelnummer, belegt.[_FachBelegnummer], [_hatZusage], PruefungBelegt, [_richtigerSemesterzug], [_Prioritaet], Datum;

[_bereitsZugeteilterAnteil] für Pflichtfächer initialisierenUPDATE Student

SET [_bereitsZugeteilterAnteil] = 0;

1. Pflicht, Vorrang für CNAM-StudierendeCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND (Student.Studiengang Like '*CNAM*') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

2. Wahlpflicht, Vorrang für CNAM-StudierendeCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND (Student.Studiengang Like '*CNAM*') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

3. Pflicht, eigener Studiengang, Belegwünsche mit Zusagen von regulären StudierendenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_hatZusage]=True AND Student.HoererStatus Not In ('A', 'N', 'V')) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

4. Wahlpflicht, eigener Studiengang, Belegwünsche mit Zusagen von regulären StudierendenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_hatZusage]=True AND Student.HoererStatus Not In ('A', 'N', 'V')) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

Sichere [_alleZugeteiltenTermine]SELECT Matrikelnummer, [_alleZugeteiltenTermine]

INTO [_TempZuteilung alleZugeteiltenTermine]

FROM Student

WHERE [_alleZugeteiltenTermine]<>''

ORDER BY Matrikelnummer;

Vorrang 9 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x9 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

5. Pflicht, eigener Studiengang, richtiger Zug, richtiges Semester (Pakete zusammenhalten), Vorrang für KMI in 'Kommunikation und Medien'Cursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND ([belegt].[_richtigerSemesterZug] = True) AND (belegt.[_Vorholer] = False) AND (belegt.[_Nachholer] = False) AND (Student.Studiengang='Bachelor KMI' AND LehrangebotOriginal.Belegnummer In ('81.7522', '81.7524')) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, LehrangebotZuteilbar.[imPaketBelegen], belegt.[_PaketUmfang] DESC, IIf(belegt.[_PaketUmfang]=0,0,LehrangebotZuteilbar.[freiePlaetze]) DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

Vorrang 8 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x8 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

[_Wunschpartner] für KESS im Pflichtbereich löschen, damit Bevorzugung auf KESS beschränkt bleibtUPDATE belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer

SET [_Wunschpartner] = Null, [_WunschpartnerSortierung] = Null

WHERE Student.Studiengang = 'Bachelor dual KESS' AND NOT belegt.[_belegtAlsWahlpflicht];

6. Pflicht, eigener Studiengang, richtiger Zug, richtiges Semester (Pakete zusammenhalten), Vorrang für KESS im PflichtbereichCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND ([belegt].[_richtigerSemesterZug] = True) AND (belegt.[_Vorholer] = False) AND (belegt.[_Nachholer] = False) AND (Student.Studiengang='Bachelor dual KESS') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, LehrangebotZuteilbar.[imPaketBelegen], belegt.[_PaketUmfang] DESC, IIf(belegt.[_PaketUmfang]=0,0,LehrangebotZuteilbar.[freiePlaetze]) DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

Vorrang 7 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x7 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

7. Pflicht, eigener Studiengang, Vorrang für JIM-Studierende bei englischen Pflicht-ModulenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND (Student.Studiengang='JIM' AND LehrangebotOriginal.Sprache='en') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

8. Pflicht (Pakete zusammenhalten), Vorrang für Austausch-Studierende bei englischen ModulenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND (belegt.[_hatZusage]=True AND Student.HoererStatus In ('A', 'N', 'V') AND LehrangebotOriginal.Sprache='en') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, LehrangebotZuteilbar.[imPaketBelegen], belegt.[_PaketUmfang] DESC, IIf(belegt.[_PaketUmfang]=0,0,LehrangebotZuteilbar.[freiePlaetze]) DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

Vorrang 6 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x6 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

9. Pflicht, eigener Studiengang, richtiger Zug, richtiges Semester (Pakete zusammenhalten), Zugtreue im Regelablauf für Veranstaltungen mit ZugzuordnungCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND ([belegt].[_richtigerSemesterZug] = True) AND (belegt.[_Vorholer] = False) AND (belegt.[_Nachholer] = False) AND (LehrangebotZuteilbar.Zug Is Not Null) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, LehrangebotZuteilbar.[imPaketBelegen], belegt.[_PaketUmfang] DESC, IIf(belegt.[_PaketUmfang]=0,0,LehrangebotZuteilbar.[freiePlaetze]) DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

10. Pflicht, eigener Studiengang, richtiger Zug, richtiges Semester (Pakete zusammenhalten), Zugtreue im Regelablauf für Veranstaltungen ohne ZugzuordnungCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND ([belegt].[_richtigerSemesterZug] = True) AND (belegt.[_Vorholer] = False) AND (belegt.[_Nachholer] = False) AND (LehrangebotZuteilbar.Zug Is Null) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, LehrangebotZuteilbar.[imPaketBelegen], belegt.[_PaketUmfang] DESC, IIf(belegt.[_PaketUmfang]=0,0,LehrangebotZuteilbar.[freiePlaetze]) DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

Vorrang 5 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x5 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

11. Pflicht, Belegwünsche mit Zusagen von Austausch-Studierenden und fremden StudiengängenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND (belegt.[_hatZusage]=True) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

Vorrang 4 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x4 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

12. Pflicht, eigener Studiengang, richtiges Semester oder Nachholer (Pakete zusammenhalten)Cursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, LehrangebotZuteilbar.[imPaketBelegen], belegt.[_PaketUmfang] DESC, IIf(belegt.[_PaketUmfang]=0,0,LehrangebotZuteilbar.[freiePlaetze]) DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

Lösche provisorische [_alleZugeteiltenTermine]UPDATE Student

SET [_alleZugeteiltenTermine] = ''

WHERE [_alleZugeteiltenTermine]<>'';

Restauriere [_alleZugeteiltenTermine]UPDATE Student INNER JOIN [_TempZuteilung alleZugeteiltenTermine]
ON Student.Matrikelnummer = [_TempZuteilung alleZugeteiltenTermine].Matrikelnummer

SET Student.[_alleZugeteiltenTermine] = [_TempZuteilung alleZugeteiltenTermine]![_alleZugeteiltenTermine];

Vorrang 1 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x1 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

13. Termine zuweisen (Pakete und Wunschpartner berücksichtigen)Cursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin]='*')

ORDER BY belegt.[_WunschpartnerSortierung] DESC, belegt.[_Wunschpartner] DESC, Student.[FachSemester] DESC;

Neue Chance für alle, die wegen Überfüllung abgewiesen wurdenUPDATE belegt

SET GrundFuerNichtzuteilung = Null

WHERE (GrundFuerNichtzuteilung='überfüllt') AND (ZuteilungTermin Is Null) AND ([_bearbeitetInRang]>4);

14. Pflicht, eigener Studiengang, richtiger Zug, richtiges SemesterCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND ([belegt].[_richtigerSemesterZug] = True) AND (belegt.[_Vorholer] = False) AND (belegt.[_Nachholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

15. Pflicht, eigener Studiengang, richtiges Semester oder NachholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

16. Pflicht, eigener Studiengang, VorholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = True) AND (belegt.[_Nachholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

17. Pflicht, fremder StudiengangCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = False) AND ([belegt].[_eigenerStudiengang] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY LehrangebotZuteilbar.[_hatPraktikumsgruppen] DESC, Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet];

[_bereitsZugeteilterAnteil] für Wahlpflichtfächer initialisierenUPDATE Student

SET [_bereitsZugeteilterAnteil] = 0;

18. Wahlpflicht, Stundenkonto ok, eigener Studiengang, Vorrang für JIM-Studierende bei englischen ModulenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (Student.Studiengang='JIM' AND LehrangebotOriginal.Sprache='en') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

19. Wahlpflicht, Stundenkonto ok, eigener Studiengang, richtiges Semester oder Nachholer, nur VertiefungsfächerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = False) AND (belegt.[_gehoertZuVertiefung] = True) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

20. Wahlpflicht, Belegwünsche mit Zusagen von Austausch-Studierenden und fremden StudiengängenCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND (belegt.[_hatZusage]=True) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

Sichere [_alleZugeteiltenTermine]SELECT Matrikelnummer, [_alleZugeteiltenTermine]

INTO [_TempZuteilung alleZugeteiltenTermine]

FROM Student

WHERE [_alleZugeteiltenTermine]<>''

ORDER BY Matrikelnummer;

Vorrang 9 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x9 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

21. Wahlpflicht, Stundenkonto ok, eigener Studiengang, richtiges Semester oder Nachholer, Vorrang für KITS und KESS im WP-BereichCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = False) AND (Student.Studiengang='Bachelor dual KITS' OR Student.Studiengang='Bachelor dual KESS') AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

Vorrang 8 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x8 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

22. Wahlpflicht, Stundenkonto ok, eigener Studiengang, richtiges Semester oder NachholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

Vorrang 7 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x7 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

23. Wahlpflicht, Stundenkonto ok, eigener Studiengang, VorholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = True) AND (belegt.[_Nachholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

Vorrang 6 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x6 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

24. Wahlpflicht, Stundenkonto ausgeschöpft, eigener StudiengangCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] >= [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

Lösche provisorische [_alleZugeteiltenTermine]UPDATE Student

SET [_alleZugeteiltenTermine] = ''

WHERE [_alleZugeteiltenTermine]<>'';

Restauriere [_alleZugeteiltenTermine]UPDATE Student INNER JOIN [_TempZuteilung alleZugeteiltenTermine]
ON Student.Matrikelnummer = [_TempZuteilung alleZugeteiltenTermine].Matrikelnummer

SET Student.[_alleZugeteiltenTermine] = [_TempZuteilung alleZugeteiltenTermine]![_alleZugeteiltenTermine];

Vorrang 1 in [_WunschpartnerSortierung] übertragenUPDATE belegt

SET [_WunschpartnerSortierung] = 'x1 ' & IIf([_WunschpartnerSortierung] Is Null, '', [_WunschpartnerSortierung])

WHERE ([_WunschpartnerSortierung] Is Null OR Left([_WunschpartnerSortierung], 1) <> 'x') AND [ZuteilungTermin] = '*';

25. Termine zuweisen (Wunschpartner berücksichtigen)Cursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin]='*')

ORDER BY belegt.[_WunschpartnerSortierung] DESC, belegt.[_Wunschpartner] DESC, belegt.[_bearbeitetInReihenfolge];

Neue Chance für alle, die wegen Überfüllung abgewiesen wurdenUPDATE belegt

SET GrundFuerNichtzuteilung = Null

WHERE (GrundFuerNichtzuteilung='überfüllt') AND (ZuteilungTermin Is Null) AND ([_bearbeitetInRang]>20);

26. Wahlpflicht, Stundenkonto ok, eigener Studiengang, richtiges Semester oder NachholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

27. Wahlpflicht, Stundenkonto ok, eigener Studiengang, VorholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND (belegt.[_Vorholer] = True) AND (belegt.[_Nachholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

28. Wahlpflicht, Stundenkonto ausgeschöpft, eigener StudiengangCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] >= [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = True) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

29. Wahlpflicht, Stundenkonto ok, fremder Studiengang, richtiges Semester oder NachholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = False) AND (belegt.[_Vorholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

30. Wahlpflicht, Stundenkonto ok, fremder Studiengang, VorholerCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] < [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = False) AND (belegt.[_Vorholer] = True) AND (belegt.[_Nachholer] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

31. Wahlpflicht, Stundenkonto ausgeschöpft, fremder StudiengangCursor: Function Nf_Zuteilung

SELECT LehrangebotZuteilbar.*, belegt.*, Student.*, [_Konfiguration SPO].[WP-Stunden], [_Konfiguration SPO].[max LV-Stunden], IIf([_Konfiguration SPO].[ECTS basierend], LehrangebotZuteilbar.[ECTS], CDbl(LehrangebotZuteilbar.[_SWS])) AS SwsEcts

FROM (Lehrangebot AS LehrangebotOriginal INNER JOIN ((belegt INNER JOIN Student
ON belegt.Matrikelnummer = Student.Matrikelnummer) INNER JOIN [_Konfiguration SPO]
ON (Student.Pruefungsordnung = [_Konfiguration SPO].Prüfungsordnung) AND (Student.stg = [_Konfiguration SPO].stg))
ON LehrangebotOriginal.LehrangebotID = belegt.LehrangebotID) INNER JOIN Lehrangebot AS LehrangebotZuteilbar
ON belegt.zuteilbareLehrangebotID = LehrangebotZuteilbar.LehrangebotID

WHERE (([belegt].[_belegtAlsWahlpflicht] = True) AND ([Student].[AlltimeWPStunden] >= [_Konfiguration SPO].[WP-Stunden]) AND ([belegt].[_eigenerStudiengang] = False) AND ([LehrangebotOriginal].[Platzreservierung] = True) AND ([belegt].[ZuteilungTermin] Is Null) AND ([belegt].[GrundFuerNichtzuteilung] Is Null))

ORDER BY IIf([_Konfiguration SPO].[ECTS basierend], Student.[_WPStundenSumme], 1.25*Student.[_WPStundenSumme]), Student.[_Zufallszahl], Student.[Matrikelnummer], belegt.[_Prioritaet], LehrangebotZuteilbar.[_Nachfrage];

weiter: Schritt 4: Zuteilungsergebnis aufbereiten

[Fb Informatik] [OBS Info] [17.04.2020 10:42:55]