Announcement

Collapse
No announcement yet.

Einschränkungen: non-null, unique, foreign-key

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

  • Einschränkungen: non-null, unique, foreign-key

    Hallo,

    ich habe mit folgender Abfrage ein Problem:

    Code:
    SELECT tblBestellung.Bestelldatum,
    tblBestellung.BeNr AS Bestellnummer,
    tblFirma.FirmaNr ,
    tblBestellpositionen.Lieferdatum,
    tblArtikel.Nummer,
    tblArtikel.Bezeichnung,
    tblBestellpositionen.Anzahl
    FROM (tblFirma LEFT JOIN tblBestellung ON
    tblFirma.FirmaNr = tblBestellung.KundeNr)
    INNER JOIN (tblBestellpositionen LEFT JOIN tblArtikel ON tblBestellpositionen.Nummer = tblArtikel.Nummer) ON
    tblBestellung.BestellID = tblBestellpositionen.BestellID
    ORDER BY tblBestellpositionen.Lieferdatum DESC
    Wenn ich die Abfrage wie oben dargestellt verwende (C# - WindowsForms, an eine DataGridView gebunden), dann werden die Daten angezeigt.
    Sobald ich aber entweder das ORDER BY weg lasse, bzw. einen Filter mit WHERE setzen möchte, erhalte ich eine
    Fehlermeldung: "Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique oder foreign-key verletzen."

    Was ist denn dann falsch an der Abfrage?
    Bzw. kann mir jemand sagen, an welche Stelle ich überhaupt das Problem suchen muss?

    Danke und viele Grüße, Bonaqua

  • #2
    https://www.google.com/search?client...-key+verletzen
    Christian

    Comment


    • #3
      Du benutzt normales Ado.Net und das landet in einer typisierten oder untypisierten DataTable?

      Hintergrund Dataset/Datatables versuchen Änderungen zu tracken. Dazu muss aber ein Datensatz in der DataTable eindeutig erkennbar sein. Und dein Select liefert etwas zurück das nach den nötigen Kriterien der DataTable nicht eindeutig ist. Zwei oder mehr Zeilen sehen für die DataTable gleich aus. Solltest du ein DataSet benutzen das mit dem Ergebnis dieser Query befüllt wird kannst du mal Testweise EnforceConstraints auf false setzen und schauen ob der Fehler weg ist.

      Wenn es dann geht solltest du das aber nicht für die Lösung halten. Sondern kontrollieren wie die Constraints bei dir aussehen und warum das Ergebnis deiner Query dagegen verstößt.

      Spekulation. Solltest du zwei völlig identische Bestellpositionen in einer Bestellung haben könnte ich mir vorstellen das da zwei völlig identische Ergebniszeilen rauskommen. Ohne es wirklich zu verstehen fehlt mir in der Select Liste etwas das eine Bestellposition eindeutig bestimmt. Die Nummer scheint einem Artikel zu entsprechen das erscheint mir nicht wirklich eindeutig für eine Bestellposition.

      Comment

      Working...
      X