PDA

Vollständige Version anzeigen : Einfügen eines neuen DS in Unterformular, dass auf Beziehungstabelle basiert.


du-it
19.06.2001, 13:05
Es existieren die Tabellen [Kunde] und [TelAdressen]. [TelAdressen] hat die Saplten
TelAdressenID (AutoWert), Landesvorwahl, Ortsvorwahl und Anschlussnummer.

Damit ich für jeden Kunden die Telefonnumern anzeigen kann, existiert eine Beziehungstabelle [Kunden_TelAdressen]. Darauf basiert ein entsprechendes Unterformular, welches in einem Kundenformular (basiert auf [Kunden]) eingebettet ist.

Was ich erreichen möchte ist:
- einem Kunde darf nicht ein und dieselbe Nummer mehrmals zugeordnet werden,
- unterschiedlichen Kunden darf die gleiche Nummer zugeordnet werden,
- in [TelAdressen] darf die Telefonnummer (bestehend aus Landesvorwahl, Ortsvorwahl und Anschlussnummer) nur genau einmal vorkommen.

Im jetzigen Formular werden die Landesvorwahl, die Ortsvorwahl sowie die Anschlussnummer durch je eine ComboBox dargestellt, die jeweilige Datensatzherkunft ist eine Abfrage auf das entsprechende
Feld in [TelAdressen].

Gibt der Anwender eine Anschlussnummer ein, die nicht in der Liste ist, tritt ein NotInList-Ereignis ein.
Theoretisch könnte ich dann ein "RecordSet.AddNew" machen.
Das Problem: Sobald ich in die neue Zeile gehe, um einen neuen Datensatz einzugeben, holt sich die Beziehungstabelle [Kunden_TelAdressen] schon eine ID aus [TelAdressen]. Führe ich auf [TelAdressen] ein .AddNew aus, wird TelAdressenID inkrementiert, so dass die 1-Seite der 1:n-Beziehung nicht mehr mit der n-Seite übereinstimmt (nämlich um genau 1 höher ist).

Wie kann ich dieses Problem lösen??

Die Fehlermeldung, die ich erhalte:
<i>Aktuelles Feld muß dem Verknüpfungsschlüssel 'TelXAdressen.TelXAdressenID' in der Tabelle auf der 1-Seite einer 1;n-Beziehung netsprechen. Geben Sie einen Datensatz mit dem gewünschten Schlüsselwert auf der 1-Seite ein, und nehmen Sie anschließend den Eintrag mit dem gewünschten Verknüpfungsschlüssel auf der n-Seite der Tabelle vor.</i>

Morli
19.06.2001, 13:36
Hallo du-it,

hast Du Acc97? Wenn ja, schick mir die DB mal zu, mir fallen da auf Anhieb einige Sachen auf.

Z.B. um zu verhindern, daß einem Kunde eine TelNr. mehrfach zugeordnet wird, mußt Du das Tabellenfeld indizieren und auf KeineDuplikate stellen. Das Gleiche gilt für die TelNr.

Also auf alle Fälle schon mal die Felder mit einem Index versehen!

Gruß

Rainer :)

du-it
19.06.2001, 14:09
Hallo, Morli.

Ja, ich verwende Access97. Allerding soll die DB im Anschluss nach Access2000 konvertiert werden. Treten da Probleme auf??

Über die Felder Landesvorwahl, Ortsvorwahl und Anschlussnummer in der Tabelle [TelXAdressen] habe ich einen Index gelegt, der eindeutig sein muss. Damit ist sichergestellt, dass die Kombination der drei Felder unique ist.

In den einzelnen Feldern dürfen die Einträge ruhig mehrfach vorkommen (halt nur nicht die Kombination).

Morli
19.06.2001, 14:44
Hallo du-it,

zur Umwandlung Acc97 zu Acc00 kann ich Dir nichts sagen, ich habe kein Acc00.

Möchtest Du mir die DB mal schicken? Wenn ja, schau ich mir sie heute Abend mal an!

Gruß

Rainer :)

du-it
19.06.2001, 14:58
Hab' sie Dir zugeschickt. Wäre ja klasse, wenn Du 'ne Idee hättest.