Unterformular verursacht Primärschlüssel-Verletzung
Timo
Gesendet: 11.11.11 15:56
Betreff: RE: Unterformular verursacht Primärschlüssel-Verletzung


Ich versteh den Fehler noch nicht ganz - ich habe mal versucht, das nachzubauen und kriege nur eine Schlüsselverletzung, wenn ich im Unterformular editiere und einen Teil des Schlüssels nicht ausfülle:

also ganz normal Patienten und Therapien als Stammdaten - ein paar Spalten mit z.B. Name des Patienten bzw. Name der Therapie würde ich zumindest zum Test noch reinnehmen..
Eine Zwischentabelle als Bewegungsdaten mit fiPatient und fiTherapie als Fremdschlüssel; die beiden zusammen mit dem Datum als Primärschlüssel (für jede weitere Therapie muss der arme Kerl einen Tag warten?)
Beziehungen gesetzt, dann Formularassistent, alle Tabellen und erstmal ALLE Felder ausgewählt; tblPatienten als Master (einspaltig) und die beiden anderen als Unterformular tabellarisch.

Ein paar Daten in den Stammtabellen eingetragen, dann wähle ich einen Datensatz im Hauptformular mit EINER PatientenID (wieso "alle Patienten aus der Patiententabelle anzeigen"?)
Im Unterformular wird die dann auch angezeigt, wenn die Formulare richtig synchron laufen, dort kann ich das Steuerelement später löschen, damit ich nicht durcheinander komme.
Oops - stimmt: ich sehe gerade (Vers. 2007), das Fremdschlüssel-Steuerelement (ComboBox mit fiPatient) wird nicht direkt gefüllt, erst wenn ein anderes Steuerelement im Unterformular editiert wird.
Hat Dich das vielleicht verwirrt? Macht nix, also StEl. fiPatient im Ufo nicht editieren (und schon gar nicht was anderes reinschreiben wie im Hauptformular). Kannst Du also löschen - nur wenn Du es im Assistenten gar nicht auswählst, gibts (oder gabs IMHO mal) Probleme mit der Verbindung von Haupt- und Unterformular.

Die 2. ComboBox im Unterformular ist der Fremdschlüssel für die Therapie-ID: dort eine Therapie wählen. Die Therapie-ID gibts dann nochmal als Textfeld, automatisch mit der ComboBox ausgefüllt: damit würdest Du den Primärschlüssel der Therapie-Tabelle editieren, dies StEl. also rauslöschen. Wenn Du dann noch ein Datum wählst, ist der Schlüssel komplett ausgefüllt und Du kannst die Zeile ohne Schlüsselverletzung wieder verlassen.

Hilft das etwas oder hab ich das zu kraus geschrieben? Du hörst Dich an, als kennst Du Dich mit Datenbanken aus - aber nicht so mit dem, was die Betriebspsychologen von MS für eine gute Office-Oberfläche einer Datenbank halten... Für den Einstieg sind evtl. die Einführungs-Hefte aus dem Herdt-Verlag (herdt.de) nicht schlecht (jaa, ich weiß, manche mögen sie nicht, aber mal so zum Durchblättern als Einstieg sind doch nette Screenshots drin...)

Viele Grüße
Timo
Top of the page Bottom of the page