Aktualisierung/Änderung einzelner Datenfelder bei verknüpften Tabellen

mareinki

Fleissiger Benutzer
Beiträge
58
Hallo!

Ich habe einen Sport-Datenbank die aus mehreren miteinander verknüpften Tabellen besteht. Die Tabellen sind
  • Tagebuch (Tagebuch_ID, Datum, Zeit, etc.)
  • Kategorie
  • Sportart (Sportart-ID, Streckenbezeichung, Höhenmeter, Entfernung, etc..)
  • Region
  • Land
Wie genau die Tabellen verknüpft sind, ist glaube ich für meine Frage nicht so relevant (aber siehe dazu auch beiliegenden Screenshot).

Mein Problem:
Ich habe in meinem Tagebuch an einem bestimmten Datum einen falsche Sportart (also falsche Sportart-ID eingetragen) und damit eine falschen Datensatz der Tabelle Sportart mit einem Eintrag im Tagebuch verknüpft).
Das wollte ich nun korrigieren, also den Datensatz in der Tabelle Tagebuch mit einem anderen Datensatz der Tabelle Sportart verknüpfen.

Dazu habe ich eine Abfrage erstellt. In dieser habe ich in der Entwurfsansicht die Aktivität gefiltert (bei Kriterien = ....). Dieser Datensatz wird auch gefunden. Dann gehe ich auf "Aktualisieren" und gebe in der Entwurfsansicht in das Feld T_Sportart_ID in die Zeile Aktualisieren die neue, richtige T_Sportart_ID ein. Bei Ausführen bekomme ich dann die Fehlermeldung "ID kann nicht akzualisiert werden, Feld nicht aktualisierbar

Was mache ich falsch?

Grüße
Markus
 

Anhänge

  • Aktualisierungsabfrage.webp
    Aktualisierungsabfrage.webp
    36,9 KB · Aufrufe: 5
Werbung:
Guten Morgen Markus,

wenn ich das richtig in Deiner Abfrage sehe, versuchst Du die falsche ID zu aktualisieren. Die T_Tagebucht.ID ist ein primärer Schlüssel, der nicht aktualisiert werden kann. Du musst die - wahrscheinlich - T_Tagebuch.Sportart_ID ändern, damit das passt.

Dann noch ein Hinweis, der hier auch immer wieder gegeben wird, ist, dass Du - wie in den anderen Tabellen auch - eindeutige Bezeichnungen für die einzelnen Felder in den Tabellen verwenden solltest - hier zweimal ID in den Tabellen T_Tagebuch und T_Sportart.

Michael
 
Hallo Markus,
ein Primärschlüssel kann durchaus geändert werden, wenn er nicht vom Typ Autowert ist. Bei der Erstellung von Beziehungen zwischen Autowert und einem Fremdschlüssel in einer anderen Tabelle sollte immer darauf geachtet werden, dass die Beziehung mit referentieller Integrität UND mit Aktualisierungsweitergabe definiert ist. Wenn ein Datensatz in der n-Tabelle der 1:n-Beziehung "in der Luft" hängen würde, wenn man den Satz in der 1-Tabelle löschen würde, sollte auch die Löschweitergabe in der Beziehung eingeschaltet sein.
In diesem Fall ist ID-Sportart wahrscheinlich ein Autowert oder die Aktualisierungsweitergabe in der Beziehung ist nicht eingeschaltet. Im ersten Fall hilft nur die Sportart neu anlegen und die zugehörigen Einträge im Tagebuch neu zuordnen.
Im zweiten Fall, Aktualisierungsweitergabe einschalten, damit Access das für dich erkedigt.
 
Hi
Meine Bezeichnungen der IDs sind nun eindeutig, aber das war nicht das Problem.

Ich habe mich vermutlich missverständlich ausgedruckt:
Zu jedem Eintrag (=Aktivität) in der Tabelle T_Tagebuch ist eine Sportart verlinkt, also welche Art von Sport ausgeübt wurde, inkl der Streckenbezeichnung (zB 333, Rad, Hötteringeralm, xx Hm, xxx Entfernung). Jeder dieser Sportarten hat eine eigene ID (ID-Sportart in der Tabelle T_Sportart) die mit der Tabelle T_Tagebuch mit der dortigen ID_Sportart referenziert ist.

Jetzt habe ich aber bei der Eingabe einer neuen Aktivität (zB ID_Tagebuch ist 3968), die falsche Sportart ausgewählt und gespeichert (sagen wir ID_Sportart 333, Rad, Höttingeralm, etc.). Richtig wäre aber die ID_Sportart, 862, Badminton, etc.

Eine Möglichkeit wäre diesen Datensatz zu löschen und einfach einen neuen Datensatz einzugeben.

Mich würde aber interessieren wie ich bei diesem bestehenden Datensatz (in der Tabelle T_Tagebuch) eine andere Sportart hinterlegen kann,

Anbei der Screenshot meiner Beziehungen mit dem korrigierten ID Namen.

Grüße Markus
 

Anhänge

  • DB_Beziehung Abfrage und fehlermeldung.webp
    DB_Beziehung Abfrage und fehlermeldung.webp
    35,8 KB · Aufrufe: 3
Hallo Markus,

wenn ich Dich richtig versteht, ist die Tabelle T_Tagebuch die Tabelle, in der Du die Aktivitägen eintragen und ggf. ändern willst. Und in T_Sportart sind die verschiedenen Sportarten enthalten, die Du mit T_Tagebuch verknüpfen willst.

Wenn Du in T_Tagebuch eine falsche Sportart ausgewählt hast, dann musst Du diese in Sportart_ID ändern und nicht die ID_Sportart in T_Sportart.

Deine Abfrage müsste also anders aufgebaut werden. Du musst in der Abfrage nicht ID_Sportart in T_Sportart ändern, sondern Sportart_ID in T_Tagebuch.

Oder habe ich da etwas falsch verstanden?

Michael
 
Werbung:
Hallo Michael!

Das hast du genau richtig verstanden :)

Und genau so wie du vorgeschlagen hast, funktioniert es auch prima!. Danke!

P.S.: Ist ja eigentlich ganz logisch, aber manchmal sieht man den Wald vor lauter Bäumen nicht (oder wie auch immer das Sprichwort lautet).

Grüße Markus
 
Zurück
Oben