Danke für diese Erläuterungen. Unter diesen Umständen verstehe ich die Fehlermeldung auch nicht. Aber könnte es sein, dass wir ziemlich aneinander vorbei geredet haben?
Nach Deinen Erklärungen gehen mir folgende Gedanken durch den Kopf:
- Der Primärschlüssel von TabelleB kann nichts mit dem Primärschlüssel von TabelleA zu tun haben, sondern ist doch nichts anderes als eine laufende Nummer aller Wochenstunden (vereinfacht formuliert).
- Zu jeder Kombination Tag+Stunde gehört ein Lehrer, also ein Verweis auf eine ID aus TabelleA.
- In der TabelleB haben Anrede+Name nichts zu suchen (weitgehendes 'Verbot' von Redundanz in Datenbanken).
Nach meinen Vorstellungen müsstest Du so vorgehen:
SQL-Code:
/* TabelleA bleibt unverändert */
/* TabelleB sieht so aus: */
CREATE TABLE Tbl_Stundenplan (
ID INTEGER NOT NULL,
Wochentag SMALLINT NOT NULL CHECK(VALUE BETWEEN 1 AND 6),
Stunde SMALLINT NOT NULL,
Lehrer_ID INTEGER,
CONSTRAINT Stundenplan_PK PRIMARY KEY(ID),
CONSTRAINT Stundenplan_Lehrer FOREIGN KEY(Lehrer_ID) REFERENCES TabelleA(ID) );
/* hinzu kämen noch Eindeutigkeitsprüfungen: Wochentag + Stunde + Lehrer_ID */
Lehrer werden
ausschließlich über TabelleA gespeichert.
Zum
Ansehen des Wochenplans kämen vermutlich
VIEWs in Frage: Stundenverteilung je Lehrer, Raumverteilung je Stunde u.ä.
Zu jeder
Wochenstunde wird nicht etwa Anrede und Name eingegeben, sondern einer der vorhandenen
Lehrer ausgewählt.
An der Stelle muss ich passen, weil ich bisher erst meine Datenstruktur konstruiert und die Oberfläche konzipiert, aber noch nicht realisiert habe. Für mich wäre aber klar:- TabelleA wird direkt über ein Grid oder RecordPanel o.ä. bearbeitet.
- Tbl_Stundenplan wird ebenso bearbeitet.
- Die Auswahl der Lehrer erfolgt über TIBLookupComboBox o.ä. - was Du eben hast - per Master-Detail-Verknüpfung.
Wenn ich Deine Gedanken richtig interpretiert und umgesetzt habe, dann versuche bitte, damit weiterzugehen. Wenn ich Dich falsch verstanden habe, dann bitte ich um Entschuldigung - und dann vergiss für Dein Problem am besten fast alles, was ich gesagt habe (auch wenn die von mir genannten Einzelheiten richtig sein müssten).
Gruß Jürgen