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

Dieses Thema im Forum "Datenbanken und Archiv Software" wurde erstellt von msg, 04.02.2007.

  1. msg

    msg Thread Starter MacUser Mitglied

    Beiträge:
    1.583
    Zustimmungen:
    17
    MacUser seit:
    31.07.2005
    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:

    Zuletzt bearbeitet: 04.02.2007
  2. ThoRo

    ThoRo MacUser Mitglied

    Beiträge:
    846
    Zustimmungen:
    58
    MacUser seit:
    22.08.2005
    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
     
  3. msg

    msg Thread Starter MacUser Mitglied

    Beiträge:
    1.583
    Zustimmungen:
    17
    MacUser seit:
    31.07.2005
    danke ThoRo, aber was heisst dann das "durchgestrichene =" - ich dachte, dieses würde "ungleich" bedeuten und nicht das "x"!!

    msg
     
  4. ThoRo

    ThoRo MacUser Mitglied

    Beiträge:
    846
    Zustimmungen:
    58
    MacUser seit:
    22.08.2005
    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
     
  5. msg

    msg Thread Starter MacUser Mitglied

    Beiträge:
    1.583
    Zustimmungen:
    17
    MacUser seit:
    31.07.2005
    danke, ThoRo, dein Tip hat geholfen, hab nachgelesen in der Online-Hilfe und dieses "Phänomen" passiert nimmer.
    msg
     
Die Seite wird geladen...

Diese Seite empfehlen