Announcement

Collapse
No announcement yet.

Master-Detail, Datensatz nicht gefunden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Master-Detail, Datensatz nicht gefunden

    Hi !

    Ich habe ein Problem mit einer Master-Detail-Verknüpfung zweier Tabellen. Ich verbinde eine Detail-Tabelle über einen Secondary-Key mit dem Primary-Key einer Master-Tabelle. Der Secondary-Key ist nicht endeutig, und soll eine Datenuntermenge anzeigen.

    Das ganze Konstrukt funktioniert auch wunderbar. Wähle ich in der Master-Tabelle einen Record aus aktualisiert sich automatisch die Anzeige der Detail-Tabelle und zeigt alle koresspondierenden Records. Ich kann problemlos durch die Tabelle scrollen, der 'RecordCount' stimmt, ich kann Datensätze in die Detail-Tabelle einfügen.

    Probleme gibt es in dem Moment in dem ich einen Datensatz der Detail-Tabelle editieren möchte. Die BDE zeigt den Fehler 'Datensatz nicht gefunden'. Trotz aller möglichen Versuche habe ich weder eine Erklärung noch einen Workaround gefunden.

    Ich benutze DELPHI 5.0 mit Update 1 unter Windows NT4.0 un der BDE5.01. Die Tabellen sind mit Paradox 4.0 erstellt worden und verhalten sich ansonsten tadellos.

    Für Anregungen im vorraus Dankbar
    Mfg. T. Frost

  • #2
    Hallo,

    diese Fehlermeldung ist nur dann möglich, wenn ein Detail-Datensatz editiert/angelegt wird, bei dem der Masterdatensatz ebenfalls noch im Edit-Modus ist. Ich würde daher vor dem Editieren des Detail-Datensatzes den Hauptdatensatz speichern:
    <pre>
    ..
    with TableMain do
    if (State in [dsEdit, dsInsert]) and (Modified) then Post;
    ..
    </pre>
    Falls das nicht der Grund war, wie sieht der Primärschlüssel der Detail-Tabelle bzw. der Fremdschlüssel aus

    Comment


    • #3
      Hallo Andreas!

      Schönen Dank zunächst für die prompte Resonanz !

      Nun zum Problem: Die Master-Tabelle befindet sich im dsBrowse-Modus wenn ich versuche die Detail-Tabelle zu editieren un der Fehler 'Datensatz nicht gefunden' erscheint.

      Die Schlüssel der Tabellen sehen wie folgt aus:

      Master-Tabelle:
      Spalten: | M_Name1 (Primärschlüssel) |...|

      Detail-Tabelle:
      Spalten: |Nummer (Primärschlüssel)|...|D_Name (Sekundärschlüssel = 'D_Name' |...|

      Follgende Zuweisung zur Erstelung der Verknüpfung erfolgt:

      Detail-Tabelle.MasterSource := Master-Tabelle-DataSource

      Detail-Tabelle.MasterFields := 'M_Name'

      Detail-Tabelle.IndexName := 'D_Name'

      Die Tabellen sind, wie gesagt, unter Paradox4.5 erstellt. Den Sekundärindex habe ich unter PDOX4.5, mit der Datenbank-Oberfläche von Delphi und mit Paradox für Windows 7.0 erstellt. Leider macht das im Resultat keinen unterschied.

      Als Workaround verzichte ich momentan auf die Master-Detail-Verknüpfung und nutze den 'AfterScroll-Event' der Master-Tabelle um die Detail-Tabelle zu Filtern. Leider ist dieser Vorgang um einiges langsamer und entspricht nicht meinem Wunsch nach Effizienz. !

      Gruß, Tobias Fros

      Comment


      • #4
        Hallo,

        was passiert, wenn der Delphi-Experte für Datenbankanwendungen verwendet wird, um diese Master/Detai-Beziehung visuell über die Dialoge zusammenzuklicken? Wenn das erfolgreich ist, würde ich dann diese Verbindung über den Objektinspektor persistent herstellen, nachdem für jede Tabelle über den Feld-Editor persistente TField-Instanzen angelegt wurden. Arbeitet dann der Mechanismus korrekt?

        Welche Datentypen werden für den Primär- /Sekundärschlüssel verwendet. M_NAME1 wird ein Zeichenfeld sein, was verbirgt sich hinter NUMMER? Verwenden M_NAME1 und D_NAME auch den exakt gleichen Aufbau? Um sicherzugehen, dass hier keine Probleme vorliegen, würde ich beide Tabellen in der Datenbankoberfläche über <b>referenzielle Integrität</b> miteinander verbinden

        Comment


        • #5
          Hi, auch heute Morgen !

          Ich habe den Datenbank-Experten mit der Erstellung der Master-Detail-Verknüpfung durchgeführt. Aber leider auch mit dem selben Resultat: Anzeige perfekt, Editieren nicht möglich.

          Der Primärschlüssel der Detail-Tabelle ist Numerisch, der Primärschlüssel (M_Name) der Master-Tabelle ist 'A20*', der Sekundärschlüssel der Detail-Tabelle (D_Name) ist auch 'A20'.

          Die Referntielle Integrität wäre mein liebstes Kind, wenn ich Sie hier in der Firma verwenden dürfte. Leider wird die Paradox-Datenbank in Ihrer jetzigen Form schon seit Begin Ihrer Zeit vor 10 Jahren ständig erweitert. Eine Umstrukturierung oder Hinzufügen von Integritäten ist da leider auf Grund der unabsehbaren Folgen nicht mehr möglich. FIRMENPOLITIK ! mit so inkonsistenten Konstrukten noch seine Zeit zu verschwenden. Das ganze Problem der Master-Detail-Verknüpfung resultiert erst aus diesem Durcheinander doppelter Datensätze, etc.

          Für weiter Anregungen Dankbar,
          T. Fros

          Comment


          • #6
            Vielleicht irgendein Index zerschossen? Ich habe schon die merkwürdigsten verhaltensweisen erlebt, OHNE das eine Fehlermeldung aufgetaucht ist. Ich würde einfach mal (nach einem Backup) TUtil (mehr infos auch in diesem Forum) auf die Tabellen loslassen

            Comment

            Working...
            X