typisiertes Dataset - Grundsätzliche Frage zu RowState.Deteach -Einträgen bei verknüpften Tabellen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von sronny.

    typisiertes Dataset - Grundsätzliche Frage zu RowState.Deteach -Einträgen bei verknüpften Tabellen

    Guten Morgen,

    und zu Weihnachten mal eine Frage:


    ich habe ein typisiertes Dataset mit mehreren Tabellen(Auszug):

    Quellcode

    1. Person:
    2. ID
    3. Name
    4. Vorname


    Quellcode

    1. Kontakt:
    2. ID
    3. IDKontaktart
    4. IDPerson
    5. Kontakt



    Quellcode

    1. Kontaktart:
    2. ID
    3. Kontaktart


    Bei den Tuts von @ErfinderDesRades werden in den Forms immer nur Einträge für eine Tabelle verarbeitet mit ​bs.EditCurrent oder ​bs.EditNew.
    Nun möchte ich aber beim Neuanlegen einer Person nun mehrere Sachen gleichzeitig eingeben lassen - also in einer Form
    den Namen und auch die Kontaktdaten - das können ja mehrere sein (Telefon, Email etc.)

    Beim öffnen des Forms wird mit ​bsPerson.AddNew ein neuer Eintrag für Person angelegt. Gespeichert mit
    ​bsPerson.EndEdit oder mit ​bsPerson.CancelEdit gecancelt. In dem Moment aber,
    wo ich in das DGV für die Kontakt Daten eintragen will - meckert er, weil die übergeordnete IDPerson fehlt = klar ist ja RowState.Deteach.

    Fehlermeldung:




    Geholfen habe ich mir da bisher, dass ich beim öffnen der Form die Person angelegt habe und im Falle das Abbruchs die Person wieder
    gelöscht habe. Ist aber auch nicht toll, weil bspw. beim Abbruch es ja trotzdem eine Änderung am Dataset gab und beim Beenden gespeichert werden soll- obwohl ja eigentlich gar nix passiert ist.

    Meine Frage ist nun, wie lässt sich das realisieren, dass ich trotzdem Eingaben machen kann, die im Cancel-Falle auch wieder gelöscht werden. Für mich auch mal sehr interessant zu wissen - wie fange ich diese Fehler ab?

    Ich bedanke mich schon mal für Hinweise und Tips und wünsche allen ein frohes Fest
    Jo, weiss ich auch nicht besser.
    Dein Dialog will ja nicht nur einen Person-Datensatz zufügen, sondern zusätzlich dazu noch von dieser Person abhängige Kontakt-Datensätze.
    Und einen abhängigen DS kann man halt nur zufügen, wenn der Main-DS tatsächlich added ist - nicht Detached.

    Mach ich in meinen Werken dann auch so, dass ich den Main-DS gleich adde, und beim Cancel halt wieder rauslösche (die untergeordneten fliegen dann ja autom. mit raus)
    Ob das eine Änderung im Dataset bewirkt, die das Dataset.HasChanges-Flag auf True setzt, bezweifel ich. Wenn ich mich recht erinnere, sollte das eiglich nicht sein.
    Ein Datensatz, der frisch zugefügt wurde, und gleich wieder gelöscht wird ist quasi nie da gewesen, und beeinflusst den DB-Abgleich ühaupt nicht.
    Ich arbeite derzeit nur Dataset-Only - also ohne dahinterliegende Datenbank. Wenn ich also beim Öffnen des Dialogs den Main-Datensatz anlege dann den / die abhängigen Datensätze eintrage und beim Beenden des Dialogs abbreche und dabei den Main-Datensatz wieder lösche wird das HasChange-Flag gesetzt. Habe das jetzt etwas anders gelöst, damit ganz am Schluss der Benutzer nicht Speichern muss, wenn er eigentlich gar nix geändert hat. Dachte mir schon, dass es so ist, wollte mich halt nur noch mal vergewissern...

    Danke dir...

    us4711 schrieb:

    sronny schrieb:

    Habe das jetzt etwas anders gelös
    Magst Du Deine Lösung veröffentlichen und hier zeigen? Ist bestimmt auch für Andere interessant ...


    Hatte anfangs ein UserControl erstellt und das in meine Form eingebunden. Das hat am Anfang auch gut funktioniert, aber hatte dann eine Konstellation gehabt, wo ich in zwei Forms parallel auf eine Tabelle ein AddNew hatte. Da hat es dann eben nicht mehr funktioniert. Witzigerweise konnte ich beim Debuggen einfach "Weiter" drücken und es hat brav die Daten angelegt, allerdings zeigte es auch, dass es so eben nicht geht.
    Hatte dann doch erst den Hauptdatensatz angelegt und dann beim Abbrechen den Hauptdatensatz wieder gelöscht und die gewünschten Daten dann per Extraform eingegeben.

    Hatte sich dann allerdings erstmal erledigt, weil mir dann VS alles geschreddert hatte. Warum und wieso auch immer. Egal. Dank dir habe ich nun den Solution-Explorer am Laufen und werde mir dann regelmäßig Backups basteln.
    Da ich sowieso jetzt neu anfange beschäftige ich mich gerade mit Objektbinding und OOP ganz allgemein. Mal schauen...

    Danke trotzdem...