Seite 2 von 2

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Donnerstag 31. Juli 2025, 12:55
von 011marTusch
Raffenberg hat geschrieben: Donnerstag 31. Juli 2025, 10:12 Benennen Sie doch einmal bitte die Datei "FehleintraegeInDatenbankBeheben.sql" in "FehleintraegeInDatenbankBeheben.~sql" um und führen dann die automatischen Prozesse nochmals aus.
Hallo Herr Raffenberg,

diese .sql-Datei ist in meiner aktuellen Installation nicht enthalten. Der Fehler erscheint trotzdem in der mitgelieferten und bisher nicht bearbeiteten MDB.

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Sonntag 3. August 2025, 00:15
von sbrando
011marTusch hat geschrieben: Donnerstag 31. Juli 2025, 12:55
Raffenberg hat geschrieben: Donnerstag 31. Juli 2025, 10:12 Benennen Sie doch einmal bitte die Datei "FehleintraegeInDatenbankBeheben.sql" in "FehleintraegeInDatenbankBeheben.~sql" um und führen dann die automatischen Prozesse nochmals aus.
Hallo Herr Raffenberg,

diese .sql-Datei ist in meiner aktuellen Installation nicht enthalten.
Kann ich bestätigen. Diese sql-Datei gibt es bei mir auch nicht...

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Montag 4. August 2025, 09:25
von A. Schüller
Das Fehlen der Datei ist wahrscheinlich die Fehlerursache.
In meinem Installationsordner ist die Datei mit drin, in dem Download-Update allerdings nicht. Evtl. wurde diese hier schlichtweg vergessen.

Wenn ich die Datei FehleintraegeInDatenbankBeheben.sql entferne, erhalte ich auch eine Fehlermeldung.

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Montag 4. August 2025, 12:04
von Raffenberg
Hier die Datei für das Schild-Hauptverzeichnis zum entpacken und testen.

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Montag 4. August 2025, 15:26
von sbrando
Ich kann bestätigen, dass die Fehlermeldung dadurch verschwindet.

Ein zusätzlicher Gedanke: Vielleicht sollten die Entwickler mal darüber aufklären, dass eine vernünftige Fehlerbehandlung implementiert werden sollte. Mit einem einfachen try-except-Konstrukt könnte man das Rätselraten deutlich einschränken. Eine Fehlermeldung wie "Datei xy im Programmverzeichnis fehlt." ist nämlich deutlich Aussagekräftiger als eine Speicherzugriffsverletzung, die im Zweifel das ganze Programm abstürzen lässt...

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Montag 4. August 2025, 22:44
von 011marTusch
sbrando hat geschrieben: Montag 4. August 2025, 15:26 ...
Eine Fehlermeldung wie "Datei xy im Programmverzeichnis fehlt." ist nämlich deutlich Aussagekräftiger als eine Speicherzugriffsverletzung, die im Zweifel das ganze Programm abstürzen lässt...
Da ist was dran! Selbst mit einer leeren Datei dieses Namens meckert das Programm nicht mehr. :mrgreen:

Re: "Autom. Prozesse ausführen" erzeugt Zugriffsverletzung

Verfasst: Montag 18. August 2025, 17:50
von T.Hagel
Raffenberg hat geschrieben: Montag 4. August 2025, 12:04 Hier die Datei für das Schild-Hauptverzeichnis zum entpacken und testen.
Nach langer Zurückhaltung dann doch noch mal ein Kommentar meinerseits, da ich ohnehin noch Tickets in Bezug auf die Schild3-Migrationen offen habe. Bei SchildZentral führen diese "Automatischen Prozesse" bei uns erst mal dazu, dass sich bei uns in den Testschulen das Programm aufhängt ("Keine Rückmeldung"). Die besagte SQL-Datei fehlt (zum Glück) auch bei uns im Hauptverzeichnis.

Denn ich habe mir mal diese SQL-Anweisungen mal näher angeschaut ... es wird ja einiges ohne Rückfrage gelöscht, bzw. Werte auf NULL gesetzt, von denen ich zumindest den Eindruck habe, dass hiermit faktisch wichtige Informationen verloren gehen. Daher zunächst die Frage, ob diese Aufräumfunktion eigentlich auch eine vorherige Datensicherung bedacht hat ? Bei einigen Informationen müssten doch eigentlich die Schulen zumindest die Möglichkeit eingeräumt bekommen, diese entweder zu aktualisieren oder als lösch-/überschreibbar zu markieren.

Denn auch bei anderen Schild3-Migrationsscripten gehen sonst faktisch Informationen verloren, die zwar aus Schild3-Sicht für einen problemloseren Import sorgen sollten, aber letztlich vielleicht doch problematisch sein dürften, wenn sie nicht mehr vorliegen.

Hier im Script sind mir aufgefallen:

1. PLZ auf NULL setzen, wenn diese nicht im Katalog Ort vorliegen:
update Schueler set PLZ=Null where PLZ is not null and not exists(select K_Ort.ID from K_Ort where K_Ort.PLZ=Schueler.PLZ)
update SchuelerErzAdr set ErzPLZ=Null where ErzPLZ is not null and not exists(select K_Ort.ID from K_Ort where K_Ort.PLZ=SchuelerErzAdr.ErzPLZ)


Hier habe ich die meisten Bedenken, denn so gehen faktisch Informationen verloren. Es zeigt so auch ein bisschen eins der Probleme mit der Adressverwaltung. Da ist auf der einen Seite die fehlende Plausibilitätsprüfung in den jeweilgen Eingabeformularen, zum anderen ein fehlender Abgleich mit der hier nun als Referenz gezogenen Tabelle K_Ort. Mir erklärt sich dieser Katalog Ort aber auch generell nicht und warum der so umständlich zu pflegen ist, aber das soll jetzt nicht Thema sein. Wie auch immer, jedenfalls gibt es Schüler, Elternteile, Lehrer, Personen, etc., die in PLZ beheimatet sind, die sich nicht im Katalog Ort wiederfinden. (Weil eben kein Abgleich zu dieser Tabelle stattfindet). Z.B. Berufsschüler oder getrennt lebende Erziehungsberechtigte, etc. Deren bisherigen PLZ-Einträge würden mit der SQL-Anweisung aus der Datei entsprechend verloren gehen.

Das Script ist eigentlich unvollständig, da in dem Zuge eigentlich alle Tabellen, in denen PLZ auftreten auf gültige PLZ geprüft werden müssten ... (bei Schildzentral komme ich auf 15 Tabellen)...

Problematisch ist dieses Script aber auch in allen Fällen, wo die PLZ inhaltlich zwar vorliegt, aber in einem (nicht nur für Schild3) unerwarteten Format. Sei es mit voran- oder nachgestelltem Leerzeichen oder einem Leerzeichen nach 2 Stellen, sei es wegen Tippfehlern die zu mehr als 5-stelligen Nummern führen, oder Zahlen mit Sonderzeichen, weil die Hochstelltaste aktiviert war, oder weil die PLZs in Klammern oder anderen Zeichen eingebunden/impotiert wurden, etc.. In allen Fällen müsste m.E. auf plausible PLZ geprüft werden und im Zweifelsfall den Schulen die Möglichkeit eingeräumt werden, diese Einträge zu korrigieren. Mit dem Script werden diese jedoch einfach mit NULL "weggebügelt".

Wie wirken sich dann Reports gegen Postleitzahlen mit dem Wert NULL aus ? Anschreiben wären damit jedenfalls postalisch nicht mehr zustellbar. Mit einer PLZ a la "(50 827)", etc. hingegen schon.


2. Löschen aller Schülervermerke ohne Vermerkart:
delete from SchuelerVermerke where Vermerkart_ID is null

Ich mag mich täuschen, aber müssten hier nicht auch die Schulen die Möglichkeit haben, zu entscheiden, ob diese Vermerke einfach gelöscht werden, oder ob man denen noch eine Vermerkart zuweist ? Bzw. müsste hier nicht zusätzlich geprüft werden, ob im Feld Bemerkung ein Eintrag vorliegt und dann entscheidden, ob der Eintrag gelöscht werden kann ?


3. Klassenlehrer und Fachlehrer auf NULL setzen, wenn sich die Kürzel nicht mehr im Katalog Lehrer finden lassen:
update SchuelerLernabschnittsdaten set Klassenlehrer=null where Klassenlehrer is not null and not exists (select K_Lehrer.ID from K_Lehrer where K_Lehrer.Kuerzel=SchuelerLernabschnittsdaten.Klassenlehrer)
update SchuelerLeistungsdaten set Fachlehrer=null where Fachlehrer is not null and not exists (select K_Lehrer.ID from K_Lehrer where K_Lehrer.Kuerzel=SchuelerLeistungsdaten.Fachlehrer)


Was ist mit Lehrern, die wegen Heirat oder Trennung als Lehrer weiterhin an der Schule tätig sind, aber ein neues Kürzel erhalten haben ? Was ist mit den Pensionären oder anderen Abgängern, die im Kürzel ein "X_" oder andere Zeichenfolgen vorangestellt bekommen ? Oder in Bezug auf die Fachlehrer, was ist mit Datenbankeinträgen, in denen durch Komma getrennt, mehrere Kürzel aufgeführt sind ? Mir ist zugegebenermaßen aber auch unklar, welche Auswirkungen diese Kürzelüberschreibung auf den Wert NULL hier bei den Lernabschnittsdaten haben und ich mir hier nicht einfach zu viele Gedanken mache.


4. SchuelerLernAbschnittsdaten in denen die Jahrgang_ID = 0 oder NULL, bzw. das Jahr NULL sind:
delete from SchuelerLernabschnittsdaten where Jahrgang_ID is null
delete from SchuelerLernabschnittsdaten where Jahrgang_ID=0
delete from SchuelerLernabschnittsdaten where Jahr is null


Hier fehlen mir auch die Zusammenhänge und das Wissen, ob man diese Daten tatsächlich bedenkenlos löschen kann. Denn bei mir drängt sich da die Frage auf, wie diese NULL- oder 0-Werte entstehen. Ob diese Fälle absichtlich auftreten (Tests), tatsächlicher Datenmüll sind oder ob diese auch versehentlich auftreten können oder in Folge anderer Abhängigkeiten, weil andere Parameter gelöscht oder geändert wurden. Sowie ob diese Abschnittsdaten noch doch noch irgendwie verwendet werden.


Schöne Grüße aus Köln
Thomas Hagel

Stadt Köln
12/Digitalisierung und Informationstechnik
Fachanwendungsentwicklung und -betreuung für Schulen