Announcement

Collapse
No announcement yet.

Nochmal Master Detail :(

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

  • Nochmal Master Detail :(

    Hallo in die Runde

    Ich habe ein kleines Problem mit start typerisierten datasets und datengebundenen DataGridViews unter VS2005 und C#.

    Ich habe bisher einiges mit ADO gemacht, jedoch habe ich immer ohne Datenbindung gearbeitet ... (wahrscheinlich weil ich früher viel mit C++ gemacht habe und das da nicht so "schön" ging).

    Nach ein bischen Einlesen bin ich aber zu dem Entschluss gekommen, dass Datenbindung unter .Net 2.0 doch recht gut gelöst sein muss, vor allem weil man fast nur positives darüber hört. Gehört.... ausprobieren wollen ... die ersten Probleme tauchen auf...

    Zwei Fragen:
    1) Ich habe ein DataGridView welches an die Master Tabelle gebunden ist. Über eine Raltion (Relation and foreign Key Costraint, alle rules auf cascade) sind die Details an ein weiteres DataGridView gebunden.
    Der Designer erzeugt mir für beide Tabellen BindigSources.
    Die Anzeige der Daten funktioniert einwandfrei (beim CurrentChange von dem MasterBindigsource lade ich die Daten via DetailTableAdapter ins Dataset).
    Das Speichern der Daten funktioniert auch auf dem Master nicht jedoch in dem Detail-Grid.
    In der Speicherfunktion rufe ich EndEditing auf beide BindingSources auf und dann TableAdapterMaster.Update und TableAdapterDetail.Update.
    Beim Detail krieg ich aber ne Fehlermeldung:
    "Concurrency violation: the UpdateCommand affected 0 of the expected 1 records."
    Woran liegt das? Ich sehe, dass der TableAdapter ein UpdateCommand beinhaltet.
    So was ähnliches passiert auch beim Löschen. Der MasterDatensatz ist gelöscht, nicht jedoch der Detail.


    2) Was ist der beste Weg um in einem DataGridView Daten aus mehreren Tabellen anzuzeigen? Ich denke da an z.B. Lookup Tabellen, also z.B. Ländernamehn aus dem LanderCode der bei einem User hinterlegt sind.
    Sowas am besten über joins lösen?

    Vielen Dank schonmal für eure Mühe

    PS: So wenig code und schon so viel Funktion ... ich bin fasziniert

  • #2
    Hallo und willkommen,

    zu 2) Deine bisherige Lösung - getrennte Tabellen, DataRelation - ist auf jeden Fall besser (statt JOIN) und beizubehalten. Tabellen, die durch JOIN eingelesen wurden, verhindern automatisches Update. Für solche Nachschlagetabellen steht die DataGridViewComboBoxColumn zur Verfügung; eine Anleitung dazu habe ich unter DataGridView: Master/Detail über ComboBox zusammengestellt.

    Jürgen

    Comment


    • #3
      Hallo Jürgen

      Danke für die schnelle Antwort,auch wenn mich der erste Punkt dringender interessiert
      Mit der Combobox das mag schon gehen, aber was wenn ich da z.B. einen aus den Feldern Berechneten Wert (z.B. aus einer stored proc.) anzeigen möchte?
      Oder wenn ich viele "Zusatzspalten" hab. Dann scheint mir der Weg über ne Combobox doch recht aufwendig.
      In solchen Fällen dann doch mit ungebundenen Formularen arbeiten?

      Comment

      Working...
      X