Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Änderung in Tabelle 1 soll sich auf Tabelle 2 auswirken

Begonnen von shadock, Juni 07, 2010, 22:46:23

⏪ vorheriges - nächstes ⏩

shadock

Hallo,

muss als erstes gleich sagen das ich ein absoluter Anfänger in Access bin.
Beschäftige mich erst seit ein paar Tagen mit Datenbanken und Access.

Habe in Büchern gelesen das es von Vorteil ist nicht alles
in eine Tabelle zu knäulen. Man soll die Daten auf verschiedene Tabellen aufteilen und ein
Vorteil wäre das wenn man in einer Tabelle etwas ändert sich das dann automatisch auf die
zweite Tabelle auswirkt. Daran hänge ich jetzt.

Ich benutze hier Access 2003 auf einem Windows XP Rechner.

Ich habe mir also mal zwei Tabellen angelegt.

Tabelle eins heisst "Anschriften". In dieser Tabelle gibt es folgende Spalten.
"Personal-Nr" "Nachname" "Vorname" "Strasse" "PLZ" für Postleitzahl.

Tabelle zwei heisst "Orte". In dieser Tabelle gibt es folgende Spalten.
"PLZ" und "Orte".

Ich habe nun für die Tabelle "Anschriften" für die Spalte "PLZ" eine Nachschlageliste
angelegt die sich auf die Tabelle "Orte" mit den Postleitzahlen bezieht.
Wenn ich nun in der Tabelle "Anschriften" eine neue Zeile mit Daten fülle und dann
zur Spalte "PLZ" komme dann öffnet sich dort ein Auswahlfeld und ich kann mir eine
Postleitzahl auswählen (muss also keine eintippen). Das funktioniert soweit auch alles.

Jetzt habe ich folgende Überlegung angestellt. In einem Ort ändert sich die Postleitzahl.
Habe also die Tabelle "Orte" geöffnet und bei einem Ort die Postleitzahl geändert und die Tabelle
abgespeichert. Nun habe ich die Tabelle "Anschriften" geöffnet aber die Änderung der Postleitzahl hat sich nicht auf die
die schon vorhandenen Daten ausgewirkt. Im Auswahlfeld "PLZ" kann ich zwar nun die neue Postleitzahl
auswählen aber ich wollte eigentlich das sich die Postleitzahlen der schon vorhandenen Datensätze von alleine
ändert.
Wie kriege ich das hin. Ich müsste ja sonst bei allen Datensätzen die Postleitzahl selbst ändern.
Das sollte aber eigentlich von alleine passieren.


shadock

blackoutNO

Hallo,

für sowas musst du im Beziehungenfenster eine 1:n Beziehung von der Tabelle orte zur Tabelle anschriften erstellen.
Deine Tabelle für die Orte muss folgende Felder enthalten:
OrtID;Autowert;Primärschlüssel
Ort;Text
PLZ;Zahl

Dein Tabelle Anschriften:
AnschriftenID;Autowert;Primärschlüssel
PersonalNR
Nachname
Vorname
Straße
OrtID_F

Über die Felder OrtID und OrtID_F erstellst du eine Beziehung mit Aktualisierungsweitergabe und referentieller Integrität.
Dazu Ziehst du die Maus vom Feld OrtID zum Feld OrtID_F

Und noch ein kleiner Tip. Bei Objeknamen, solltest du auf Sonderzeichen verzichten. Das - in der Personalnummer könnte dir mal Probleme bereiten, da Access ein - als - behandelt und nicht also wird es versuchen Personal minus Nr zu rechnen, was natürlich schief gehen wird ;)
Der _ ist hier die einzig erlaubte Ausnahme. Diesen kannst du verwenden. Aber alle anderen Zeichen, solltest du weglassen!

Gruß, Jörn
Cheers
Jörn

MzKlMu

#2
Hallo,
Du musst die beiden Tabellen im Beziehungsfenster in Beziehung setzen. Dann noch referentielle Integrität einstellen mit Aktualisierungsweitergabe. Mit Tabellenfeldern als Nachschlagefelder geht das nicht automatisch.

Die Nachschlagfelder solltest Du in der Tabelle auch wieder entfernen. Solche Felder sind nur in Formularen sinnvoll verwendbar, wie man überhaupt niemals mit Tabellen direkt arbeitet, sondern immer nur über Formulare.


Edit:
Oder dem Vorschlag von Jörn folgen mit der separaten ID.
Aber die PLZ nicht als Zahl sondern als Text, sonst sind die deutschen 0en bei der PLZ weg.

Übrigens, es ist unerwünscht gleichzeitig in mehreren Foren zu posten. Wenn Du zukünftig Antworten haben willst, solltest Du das unterlassen.
Gruß Klaus

blackoutNO

Na zum Glück nimmt es einem keiner Übel, wenn man in mehreren Foren Antworten gibt :D
Cheers
Jörn

shadock

Hallo,

Ich habe noch wo anders gepostet weil es auf das Forum ankommt und wie gut die Leute
darin sind wie schnell man eine Antwort bekommt.
Habe schon öffters in Foren Tage oder Wochen lang auf eine Antwort gewartet.
Werde es mir aber merken.

Hallo blackoutNO.
Ich habe die Tabelle "Orte" um OrtID;Autowert;Primärschlüssel erweitert.

Ich habe die Tabelle "Anschriften" um AnschriftenID;Autowert;Primärschlüssel erweiter.
Habe die Tabelle "Anschriften" um  OrtID_F;Zahl erweiter.
Habe in der Tabelle "Anschriften" nichts eigetragen.
Habe unter Extras Beziehungen eine Beziehung mit Aktualisierungsweitergabe und referentieller Integrität angelegt.
Wenn ich jetzt in der Tabelle "Anschriften" bei OrtID_F nachsehe bleiben die Felder leer.
Woher soll die Spalte denn auch wissen in welche Zeile welche PLZ reinkommt.
Habe nun versucht in die Spalte OrtID_F Postleizahlen einzutragen.
Bekommme beim Abspeichern aber die Fehlermeldung
"der Datensatz kann nicht hinzugefügt oder geänder werden, da ein Datensatz in der Tabelle "Orte"
mit diesem Datensatz in Beziehung stehen muss"
Habe die Beziehung also wieder gelöscht.

Habe als nächstes in der Tabelle "Anschriften" in der spalte OrtID_F die Postleitzahlen eingetragen und
wollte nun eine Beziehung herstellen. Bekomme dann aber folgende Fehlermeldung.
"Access kann diese Beziehung nicht herstellen, wenn referenzielle Integrität gefordert wird.
In der Tabelle "Anschriften" gibt es Daten, die gegen die Regel für referenzielle Integrität vestossen.
Dies ist z.B. der Fall, wenn es in einer verwandten Tabelle Datensätze gibt, die Informationen zu einer Angestellten
enthalten, in der Mastertabelle aber kein Datensatz für die Angestellte existiert.
Ändern sie die Daten so , dass für alle verwandten Datensätze Masterdatensätze existieren.
Wenn sie die Beziehung so herstellen möchten, das die Regel für referentielle Integrität nicht
beachtet werden, müssen Sie das Kontrollkästchen "Mit referentieller Integrität" deaktivieren"

Ich dachte mir das ich in der Tabelle "Anschriften2 am Anfang die richtigen Postleitzahlen eintrage so wie Sie auch
in der Tabelle "Orte" vorkommen und wenn ich dann in der Tabelle "Orte" eine Postleitzahl ändere das sich
das dann auch in der Tabelle "Anschriften" ändert.

Das ich Personal-Nr als Spalten Überschrift gewählt habe liegt an dem Buch das ich über Access habe.
Wie gesagt bin noch ein Anfänger der sich erst ein paar Tage mit Access beschäftigt.

Habe mal meine datenbank.mdb mitgeschickt.


shadock

[Anhang gelöscht durch Administrator]

MzKlMu

Hallo,
das Feld PLZ brauchst Du in der Anschrifttabelle nicht mehr. Die komplette Anschrift wird jetzt erst in einer Abfrage erstellt. Siehe die Abfrage "qryAnschrift". Wenn Du jetzt eine PLZ änderst, wird das automatisch auch in der Abfrage sichtbar. Die Spalte "PLZ" darf es nur in einer Tabelle geben.
Das Feld "PLZ" musst Du als Textfeld anlegen, weil es PLZ gibt mit einer 0 vorne. Bei einer Zahl wird diese nicht dargestellt.
"Personal-Nr" in "PersonalNr" geändert.

DB anbei.

ZitatHabe schon öffters in Foren Tage oder Wochen lang auf eine Antwort gewartet.
Das wirst Du in einem Access Forum nicht erleben, jede Wette.

[Anhang gelöscht durch Administrator]
Gruß Klaus

blackoutNO

.
ZitatHabe schon öffters in Foren Tage oder Wochen lang auf eine Antwort gewartet.
Das wirst Du in einem Access Forum nicht erleben, jede Wette.

Vor allem jetzt wo sie die Newsgroups ausschalten und wir in deutschland noch kein Gutes Forum von MS haben :D

Aber der Entwurf von MzKlMu ist genauso wie ich ihn auch gemeint habe. Und wie schon erwähnt: einfach eine Abfrage aus diesen beiden Tabellen erstellen und du hast keinerlei Probleme mehr ;)

Gruß, Jörn
Cheers
Jörn

shadock

Hallo und guten Morgen.
Ist gestern spät geworden.

Habe selten in einem Forum so schnell so gute Antworten bekommen.
Beschäftige mich seit Jahren mit Computern und bin in einigen Hard und Software und Programmier-Foren.
Manchmal bekommt man Tagelang gar keine Antworten oder nur Unsinn wie z.B. "da musst du mal bei google nachsehen".
Als hätte man das nicht auch gewusst.
Manchmal schreiben Leute etwas rein wo ich mir denke die schreiben wegen des Schreibens
etwas rein haben aber keinen Schimmer oder wollen es nicht zugeben. Die Hauptsache mal was zum Thema gesagt
(geschrieben).

Weis jetzt an welches Forum ich mich bei meiner nächsten Frage wende.
Noch mal vielen Dank an blackoutNO und MzKlMu. Ihr habt mir sehr weiter geholfen.

Bei mir ist jetzt der Groschen gefallen. Habe jetzt begriffen das sich in der Tabelle nichts ändert
sondern das nur in der Abfrage die Änderungen zu sehen sind.
Stand wahrscheinlich auch so in meinem Buch drin aber habe ich wohl
einfach nicht gerafft.

shadock