m:n View mit 3 DGVs

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Akanel.

    m:n View mit 3 DGVs

    Hallo in die Runde,

    alle Interessierten der Datenbankprogrammierung haben sich bestimmt das Tut zu Relationales Datenbankmodell von @ErfinderDesRades angesehen. Falls nicht, kann ich das und die folgenden Artikel nur empfehlen.

    Ich bin an einem Punkt, da würde ich die m:n Beziehung gerne mit 3 DataGridViews visualisieren. Aber nicht so - und das ist jetzt keinesfalls despektierlich gemeint - primitiv, wie in der Beispiel-Solution PersonProfessionVB.

    Nämlich würde ich gerne links oben eine Profession auswählen und dann soll das Ding unten links alle Personen mit dieser Profession anzeigen.
    Oder
    Ich würde gerne Daten in einem DGV oder Formular zusammengefasst anzeigen, ohne ComboBoxen, statt dessen in z.B. Textfeldern. Wie ein inner join view.

    Allein durch verdrahten der BindingSources über DataSource und DataMember gelingt mir sowas nicht. Das Datenmodell lässt mich über die Profession auf die zugehörigen Datensätze in PersonProfession zugreifen, wie in der BindingSource "bsProfessionOfPerson" vorgemacht. Damit kann man die PersonID holen und mit einer ComboBox den Namen anzeigen.
    Das DGV "Professions of Persons" unten links zeigt sich von der Klickerei unbeeindruckt.

    OliverSte schrieb:

    Nämlich würde ich gerne links oben eine Profession auswählen und dann soll das Ding unten links alle Personen mit dieser Profession anzeigen.


    Das wird nicht funktionieren. Schau dir dazu mal die BindingSources der beiden DGV´s an.
    Die BindingSources beinhalten nur Personen oder nur Professions. Kein PersonProfession oder ProfessionPerson. Somit gibt es da auch keine Relation.
    Dafür hat das DGV oben Rechts das was Du möchtest. Musst halt nur Umdesignen. Oder Warum genau soll es das DGV unten Links sein.

    OliverSte schrieb:

    Ich würde gerne Daten in einem DGV oder Formular zusammengefasst anzeigen, ohne ComboBoxen, statt dessen in z.B. Textfeldern. Wie ein inner join view.


    Was genau meinst Du hier mit zusammengefasst? Die Profession und die dazugehörige Person? Ist doch im TotalView das mittlere DGV.
    Hallo @Akanel,

    dass das nicht funktionieren wird, weil die BindingSources eben so verdrahtet sind, ist mir klar. Die Frage war, wie muss man es machen. Oder, kann/muss man das Datenmodell ändern, dass man von der PersonProfession Tabelle wieder zurück zu den Personen kommt?
    Was du mit "musst du nur umdesignen" meinst, wie soll das gehen?

    Das TotalView zeigt alles, ungefiltert. Das ist nicht das, was ich möchte.
    Noch mal. Es ist klar, dass die Solution das nicht kann, so wie das da programmiert und designed ist.
    Danke für deine Bemühungen.
    Du kannst dem DGV eine andere Bindingsource zuweisen. (oben rechts am DGV der kleine schwarze Pfeil)
    Und dann kannst Du mit einem Rechtsklick die Spalten des DGV bearbeiten.
    Im folgenden Screen habe ich die bsPersonOfProfessions dem DGV unten Links zugeordnet und die Einstellungen wie auf Screen 2 vorgenommen.



    somit hast du schonmal deine Personen unten links wie du wolltest.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    @Akanel Hab's genau so gemacht, doch klappt es nicht. So sieht das dann aus:


    Ahh, nicht bsPersonOfProfession dem DGV unten Links zuordnen, sondern bsProfessionOfPerson! ;)

    Interessant ist die Einstellung "DisplayStyle", die eine Combobox wie eine Textbox aussehen lässt. Kannte ich noch nicht.
    Ist nicht ganz, was ich wollte, aber sehr nah dran. Allerdings fühlt es sich an wie von hinten durch die Brust ins Auge.
    Bilder
    • Image 23.png

      43,92 kB, 1.197×611, 110 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „OliverSte“ ()

    Der unterschied ist nur noch das ich die Spalte ProfessionID entfernt habe. Sonst hast du es so wie meines.
    Erkläre doch bitte noch genauer was du dir unter dem zusammengefasten DGV vorstellst. Welche daten sollen da angezeigt werden?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.