FM: Löschen eines Datensatzes killt gleich mehrere Datensätze

msg

msg

Aktives Mitglied
Thread Starter
Dabei seit
31.07.2005
Beiträge
1.975
Reaktionspunkte
32
Hi!

Ich stehe vor einem Problem, das mir gestern abend viel Sorgen bereitet hat. Die DB, um die es geht ist so strukturiert:
DB#1 enthält Einnahme/Ausgabe-Posten, DB#2 Klienten. Über eine Beziehung sind beide miteinander verbunden - in einem Datensatz aus DB#1 kann man per Drop-Down-Menü einen Klienten aus DB#2 auswählen. (siehe beiliegende screenshots).

Per Suche habe ich nun alle DS aus DB#1 aufgerufen, die ein und denselben Klienten enthalten und habe nur einen davon gelöscht. Blöderweise wurden alle >70 Stück Datensätze entfernt, die diesen Klienten enthalten haben und noch dazu aus DB#2 (Klientendatenbank) den ganzen Datensatz dieses Klienten. Beabsichtigt war das Löschen nur dieses einzelnen Datensatzes aus DB#1.

Meiner Meinung nach hängt dies mit der Definition der Beziehung zusammen, aber ich bin da nicht so sattelfest, dass ich euch bitte, da mal zu untersuchen, woran dieser Umstand liegen könnte: dass da gleich alles, was mit diesem einen Klienten zu tun hat, gelöscht wurde!

Auf der Grafik bzhg1.gif sieht man die Definition der Beziehung der beiden Tabellen (wie ich sie in der DB#1 eingestellt habe), sie war vorher auf "=" und ist jetzt auf "x", in beiden Fällen löst das Löschen eines DS ein Killen aller DS des betreffenden Klienten und das Klientendatensatzes aus. Der screenshot bzhg2.gif zeigt die Details dieses Beziehung zwischen DB#1 und #2.
In der DB#2 der Klienten habe ich die Beziehung zur DB#1 gleich definiert, nur dass ich (Bild bzhg3.gif) die optionen "Bezugsdatensätze löschen, wenn..." aktiviert habt. Meint ihr, war das der Fehler?

Was ist denn der Unterschied zwischen dem "x" und dem "=" als Beziehungsdefinition, ich habe da in der Praxis keinen Unterschied bemerkt, was meint ihr, sollte ich denn einstellen?

Ich hoffe, ihr kennt euch da aus und könnt mir helfen, das wär mir sehr wichtig! Ich möchte mir weitere Experimente mit etwaigem Datenverlust ersparen! Danke!

msg
 

Anhänge

  • bzhg1.gif
    bzhg1.gif
    15,5 KB · Aufrufe: 85
  • bzhg2.gif
    bzhg2.gif
    32,5 KB · Aufrufe: 94
  • bzhg3.gif
    bzhg3.gif
    34,6 KB · Aufrufe: 66
Zuletzt bearbeitet:
Hi msg,

wenn ich es so früh am Sonntag Morgen richtig verstehe, dann hast Du einen netten Ringverweis programmiert und dann abschließend noch ein Löschen der jeweiligen Bezugsdatensätze aktiviert.

Zuerst einmal: das x bedeutet "ist nicht" bzw. "ungleich".
Deine Beziehungsdefinition als Bild 1 besagt also, daß eine Verbindung besteht, wenn der volle Name in der Klientendatei ungleich dem Klienten in Einnahmen/Ausgaben ist.
In Bild 3 baust Du die gleiche Beziehung von den Einnahmen/Ausgaben ausgehend zu den Klientendaten auf. Und teilst der Datenbank mit, daß beim Löschen von z.B. "Müller" aus der Einnahmen/Ausgaben Tabelle alle damit verbundenen Datensätze (also alle Klienten die NICHT Müller heißen) aus der Kliententabelle gelöscht werden sollen.

Ich würde Dir für Dein ursprüngliches Problem (Löschen eines Datensatzes aus der Einnahmen/Ausgaben Tabelle vorschlagen, zuerst den Namen des Klienten aus dem Feld "Klient" zu löschen (um die Beziehung aufzutrennen) und erst dann den Datensatz zu löschen.

Außerdem würde ich die Beziehungen wieder korrekt auf "=" umstellen....

MfG

ThoRo
 
danke ThoRo, aber was heisst dann das "durchgestrichene =" - ich dachte, dieses würde "ungleich" bedeuten und nicht das "x"!!

msg
 
Hi msg,

sorry, mein Fehler (es war wirklich noch etwas früh für mich ;) ). Der "Ungleich" Operator ist tatsächlich das durchgestrichene Gleichheitszeichen.
Das "x" verbindet alle Werte der linken Tabelle mit denen in der rechten Tabelle, also ein "Alles zu Alles" Operator.

Nachzulesen in der FM 8.5 Onlinehilfe unter "Beziehungen, die Vergleichsoperatoren verwenden".

MfG

ThoRo
 
danke, ThoRo, dein Tip hat geholfen, hab nachgelesen in der Online-Hilfe und dieses "Phänomen" passiert nimmer.
msg
 
Zurück
Oben Unten