MS Access Datenbank: PLZ + Ort auslagern

klecksii

Ensign
Registriert
Apr. 2021
Beiträge
148
Guten Tag,

ich übe mich gerade in MS Access ein und habe ein Problem.

Zur Übung arbeite ich gerade an einer Kundendatenbank. Erfasst werden sollen Vorname, Nachname, Straße/Nr, PLZ, Ort. Also recht schlicht gehalten.

Und zwar sagt man ja, dass es sinnvollsein kann, den Ort und die PLZ auf eine andere Tabelle auszulagern. Und hierbei stoße ich auf ein Problem!

Wenn ich nun einen Kunden anlegen will, z.B. seinen Vornamen eintippe, funktioniert das nicht. Access gibt folgendes aus:
„Es können keine Datensätze eingefügt werden, der Verknüpfungsschlüssel der Tabelle ‚tblKunden‘ ist nicht in der Datensatzgruppe enthalten."

Ich glaube, das Problem liegt an der Referentiellen Integrität die ich im Beziehungsfenster aktiviert habe (sowie die Aktualisierungsweitergabe). Nur frage ich mich, wie das denn funktionieren soll. Ich wäre davon ausgegangen, dass Access beim Anlegen eines neuen Kunden, auch automatisch in der Tabelle tblPLZOrt ein neuer verknüpfter Datensatz angelegt wird – was anscheinend nicht der Fall ist. Was mache ich falsch?

Die Abfrage für das Formular:
1.jpg


Das Formular:
2.jpg


Vielen Dank im Voraus!
Ergänzung ()

Ich habe eben mal die referentielle Integrität im Beziehungsfenster ausgeschaltet und nochmal versucht einen Datensatz anzulegen. Datensatz konnte angelegt werden. Ich habe die referentielle Integrität danach wider aktiviert, und siehe da, nun funktioniert es auch mit der ref. Integrität.

Wo lag das Problem?
 
Zuletzt bearbeitet:
na denke mal, in die Tabelle "Adresse"muss ein Feld mir der Kunden ID rein, die wird dann verknüpft

dann kann man auch unter einem Kunden mehrere Adressen anlegen, dann sollte aber ein weiteres Merkmal dazu kommen, Privat, beruflich usw
 
Zuletzt bearbeitet:
Weil das nicht deine 1. o. 2. Frage zu relationalen Tabellen ist, nur der Hinweis - es gibt auch objektorientierte DBs, wo du dich mit derartigen Fragen nicht beschäftigen musst. Diese sind nicht zuletzt deshalb entstanden, weil man eher in Objekten denkt und arbeitet.
Und die Tools zu nehmen, die einem (mehr) liegen ist durchaus üblich.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Toms
Fang damit an, die Verknüpfung der beiden Tabellen zu korrigieren.
 
@Micke, kannst Du da mehr zu sagen? Was sind das für Datenbanken?

@floq0r, das weiß ich bereits (denke ich..), trotzdem komme ich nicht weiter. Die Referentielle Integrität soll garantieren, das auf der Basistabelle (tblKunden) nur Werte möglich sind, wenn auf der Detailtabelle (hie PLZOrt) der entsprechende Schlüssel übereinstimmt.

Lege ich nun einen Datensatz über das Formular an, so dachte ich, erstellt Access einen Datensatz für tblKunden, z.B. mit der ID 1, und dementsprechend wird automatisch ein Datensatz für tblPLZOrt angelegt, wo die ID(1) gleich von tblKunden mitübertragen wird (oder andersherum).
 
ja, dazu muss halt die Kunden Id der Kd,-Tabelle mit einem Datensatz in Adressen verkünüpft werden. Daher die KdId in der Tabelle Adressen
 
klecksii schrieb:
Lege ich nun einen Datensatz über das Formular an, so dachte ich, erstellt Access einen Datensatz für tblKunden, z.B. mit der ID 1, und dementsprechend wird automatisch ein Datensatz für tblPLZOrt angelegt, wo die ID(1) gleich von tblKunden mitübertragen wird (oder andersherum).
Dein Gedanke dazu ist so nicht ganz richtig. Um es schlicht zu halten, gehört die Adresse auch in die tblKunden.

Eine sinnvoll in Beziehung stehende Tabelle wäre dann z.B. tblKundenauftrag, welche die Aufträge enthält. Du könntest dann je einen Kunden mehrere Aufträge verwalten. Die Beziehung wäre dann Kunde (1) zu Auftrag (n bzw. unendlich). Der Auftrag würde dann eine Referenz auf den Kunden halten.

Das bedeutet auch, dass der Kunde existieren muss, bevor ein Auftrag angelegt wird.
 
hier, die Abfrage, aus beiden Tabellen mit Verknüpfung. Jeder Datensatz eines Kunden, kann dann mehrere Adressen haben. Macht auch Sinn wenn man einen Kunden anzeigt, der mehrere Adressen hat

DB.jpg
 
Zuletzt bearbeitet:
Zurück
Oben