none
Fehler in Anwendung mit relationaler Datenbank RRS feed

  • Frage

  • Hallo,

    ich bin dabei ein einfaches Bücherverwaltungsprogramm zu programmieren. Ich habe dazu eine relationale Datenbank (BookLibrary.sdf) mit folgenden Tabellen angelegt (um Redundanz zu vermeiden):

    Editor - Master

    EditorID (PK, int, autoincr.)

    Editor (string)

    Publisher - Master

    PublisherID (PK, int, autoincr.)

    Publisher (string)

    Book - Detail

    BookID (PK, int, autoincr.)

    Title (string)

    EditorID (FK, int)

    PublisherID (FK, int)

    Year (string)

    ISBN (string)

    Da ich nun 2 Master-Tabellen habe, die in Relation zur Detail-Tabelle stehen, wusste ich nicht genau, welche Detail-Tabelle ich für das Generieren des DataGridViews verwenden soll. Im BookLibraryDataSet ist nämlich sowohl unter Editor als auch unter Publisher eine Book-Tabelle zu finden. Ich habe mich dann letztendlich für die Book-Tabelle entschieden, die unter Editor zu finden war. Wahrscheinlich ist es egal, welche der beiden Book-Tabellen man nimmt. Dann habe ich zwei LookupDataSets und die dazugehörigen BindingSources erzeugt, eins für die Editor-Tabelle und eins für die Publisher-Tabelle. Diese habe ich für die ComboBox Spalten des Book-DGV benötigt. Anschließend habe ich noch 2 ToolStripButtons definiert, die neue Formulare öffnen, um Editoren bzw. Publisher eintragen zu können.

    Nun habe ich die Anwendung gestartet, einige Editoren und Publisher eingetragen und gespeichert und zuletzt ein Buch (Titel, Year und ISBN eingetragen und Editor sowie Publisher aus den ComboBoxen ausgewählt) eingegeben. Als ich die Daten speichern wollte, kam folgende Fehlermeldung:

    "ForeignKeyConstraint FK_Book_Publisher requires the child key values (1) to exist in the parent table."

    Der Fehler tritt auf in der Zeile

    Me.BookBindingSource.EndEdit()

    Die Werte existieren doch in der Datenbank in der Master-Tabelle Publisher, sonst hätte ich sie in der ComboBox nicht auswählen können, zumal ich separate LookupDataSets habe. Hat jemand eine Idee, woran es liegen könnte?


    Gruß LittleBlueBird
    Mittwoch, 1. September 2010 09:04

Antworten

  • Hallo,

    ich habe festgestellt, dass ich einige Denkfehler und Versäumnisse hatte. Ich hatte eingangs erwähnt, dass ich mein DGV aus der untergeordneten Book-Tabelle generiert habe. Das war jedoch falsch, weil dann nur die Bücher in Abhängigkeit vom aktuellen Editor angezeigt werden. Dann habe ich es versäumt BindingSources und DataTables für die Editor- und Publisher-Tabellen zu erzeugen. Dass das Speichern mit dem TableAdapterManager dann zu Problemen führt, ist einleuchtend. Das o.g. Problem ist damit gelöst.


    Gruß LittleBlueBird
    • Als Antwort markiert LittleBlueBird Donnerstag, 2. September 2010 05:39
    Donnerstag, 2. September 2010 05:39