Filter im gebundenem DGV

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von HaRoWagner.

    Filter im gebundenem DGV

    Hallo,

    meine Ausgangslage ist dieses Dataset


    Ein Betrieb (Betriebsnummer) kann n (Teile-)Stammdateien haben. In jeder Stammdatei können n Ersetzungen der Warenart vorkommen (eher selten, aber kann halt).
    Meine erste Lösung ist zwar Funktionsfähig aber unschön:


    Ich hätte gerne die folgende Lösung,


    aber man auch solgleich die Probleme sehen. Das Problem ist beim Abrufen existierender Einträge und beim Erfassen neuer Einträge gleich.

    Wenn der Betrieb über die Combobox (gebunden ans Binding VPDIDBetriebsSource) gewählt ist und die Stammdatei (Binding BetriebTeileSource) gewählt wird, werden die vorhandenen Felder auch angezeigt. Aber der Haken ist, dass die beiden Comboboxen selbt keinen Text mehr zeigen. Obwohl wenn man sie dann wieder "aufklappt" die richtigen Einträge markiert sind. Die Comboboxen zeigen nach wiederholter Auswahl die Werte dann auch an, wie man es erwarten würde.

    Vielleicht kann mir jemand auf die Sprünge helfen?

    Danke im Voraus und ein frohes Osterfest allen Lesern.
    HaRo
    mein Benamungs-Schema für DB-Entitäten
    vermutlich hast du bei den DataRelations was verdaddelt.

    nee - ich kapiere eiglich nicht, wie die Tabellen im 3.Bildle funktionieren sollten
    Die erste Tabelle - dgvBetrieb kann doch keine Spalte "Stammdatei" enthalten, denn Stammdatei ist doch eine Property der untergeordneten Teile.
    Ein Betrieb hat doch mehrere Teile, und also auch mehrere "Stammdateien" - wie sollen die den in eine Tabellenzelle?

    Hingegen ein ReplaceFW kann seine StammDatei problemlos per Combo anzeigen, denn es ist dem Teile ja untergeordnet, vermutlich hast du bei den DataRelations was verdaddelt.

    nochma: mein Benamungs-Schema für DB-Entitäten
    Denk nochma feste über deine Benamungen nach - die ist bei dir inkonsistent, und Plural-Flexierung ist inne Praxis eher irreführend als Singular.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo ERD

    ErfinderDesRades schrieb:

    nee - ich kapiere eiglich nicht, wie die Tabellen im 3.Bildle funktionieren sollten
    Die erste Tabelle - dgvBetrieb kann doch keine Spalte "Stammdatei" enthalten, denn Stammdatei ist doch eine Property der untergeordneten Teile.

    die Tabelle im dritten Bild ist im Grunde eine Zusammenfassung der 3 Tabellen aus dem 2. Bild.
    Natürlich hat die Tabelle dgvBetrieb im 2. Bild keinen Hinweis/Eintrag einer Stammdatei.
    Ein Betrieb hat doch mehrere Teile, und also auch mehrere "Stammdateien" - wie sollen die den in eine Tabellenzelle?
    Ein Betrieb hat mehrere Teile, aber darum geht es hier überhaupt nicht. Es sollen 3 Arten von Stammdateien migriert werden, Kundestamm, Fahrzeugstamm und Ersatzteilestamm. Üblicherweise hat ein Servicebetrieb einen Ersatzteilestamm, es können aber auch mehrere sein wenn mehrere Marken (Hersteller) bedient werden. Mit "Stammdatei" in diesem Zusammenhang ist die Ersatzteilestammdatei gemeint.

    Die mittlere dgv im 2. Bild, nennen wir es dgvETSBetrieb sind die Ersatzteilestämme nach Betrieb gelistet mit weiteren Information, die aber in einem anderen Abschnitt vorher alle definiert wurden.

    Der fiktive Betrieb 47110 hat 3 Stammdateien für drei Hersteller. Alle drei Stämme (ET) müssen migriert werden, bei allen drei Stämme (ET) können Fabrikats-/Warenarten Ersetzungen haben, weil im Ziel-System diese ggf. anders abgehandelt und kontiert werden.

    Diese 3 DGVs im zweiten Bild sind also nur "Navigatoren" um die richtige Stammdatei des betreffenden Betriebes (in der Firmengruppe mit weiteren Betrieben, die im dgvBetrieb gelistet sind) anzusteuern, um die Ersetzungen für den jeweiligen Ersatzteilestamm hinterlegen zu können. Ich versuche nun (Bild 3) das in einem dgv unterzubringen um dem Anwender die Navigation plausibler zu machen.
    Hingegen
    ein ReplaceFW kann seine StammDatei problemlos per Combo anzeigen, denn
    es ist dem Teile ja untergeordnet, vermutlich hast du bei den
    DataRelations was verdaddelt.

    nochma: mein Benamungs-Schema für DB-Entitäten
    Denk
    nochma feste über deine Benamungen nach - die ist bei dir inkonsistent,
    und Plural-Flexierung ist inne Praxis eher irreführend als Singular.
    Okay, schön ist was anderes und ich habe da auch sicher etliche Defizite. Allerdings kann ich mir nicht vorstellen mich verdaddelt zu haben, denn die Comboxen im 3 Bild sind genauso gebunden wie die einzelnen DGVs 1 und 2 aus dem zweiten Bild. Dort kann man gut an der Kenzeichnung des aktuellen Datensatzes erkennen wo man sich befindet.
    Es funktioniert ja auch im 3. Bild, nur werden die gewählten Einträge der "Filter"-Spalten nicht dargestellt. Zumindest nicht nach der ersten Auswahl, wählt man die selben Einträge ein zweites Mal aus werden sie ja angezeigt.

    Ich habe schon ein paar Tage daran gebastelt, bisher habe ich noch keinen Ansatz gefunden das Problem elegant zu lösen. Allerdings sind meine Kenntnisse sowohl was Datenbindungen angeht als auch was DGVs ets. angeht eher nicht vorhanden. Ohne Deine vielen einzelenen Tutorials hätte ich das Thema längst verworfen.

    HaRo

    HaRoWagner schrieb:

    die Tabelle im dritten Bild ist im Grunde eine Zusammenfassung der 3 Tabellen aus dem 2. Bild.
    1. im 3. Bild sind 3 Tabellen - du scheinst iwie dieselbe Ansicht 3 mal untereinander gestellt zu haben.
    2. Wie kann man mehrere Tabellen zusammenfassen :?: :?:

    Aber lass uns bitte genaue Begriffe verwenden: Tabellen sind im Dataset, und auffm Form sind DGVs.
    Und im 2. Bild sehe ich einen 3-stufigen ParentChildView, dargestellt mittels 3er DGVs
    Im 3. Bild sehe ich 3 DGVs, die scheinbar dieselbe Tabelle präsentieren, ich glaub die Teile-Tabelle.
    Was das bezwecken soll ist mir unklar.
    Hallo ERD,

    das 3. Bild zeigt das dgv in den 3. Bearbeitungsschritten, also das selbe dgv 3 mal.

    In der Spalte 1 ist die Auswahl des Betriebes als Combobox aus der VPDIDBetriebssource untergebracht.
    In der Spalte 2 ist die Auswahl der gewünschten ET-Stammdatei des Betriebs als Combobox aus der BetriebTeileSource untergebracht.
    Der Rest ist das an die TeileReplaceSource gebundene dgv.

    Die 3 Bearbeitungsschritte sollen nur das Problem zeigen, mehr nicht.
    1) Auswahl Betrieb: alles okay
    2) Auswahl Stammdatei: sobald ausgewählt zeigen die Spalten "FW Stamm" und "FW neu" auch korrekt an, aber die beiden "Auswahl"-Comboboxen zeigen "nichts" an.

    Das verunsichert und ich möchte eigentlich nur eines: die beiden Comboboxen sollen das ausgewählte auch anzeigen.
    Das tun sie aber nur, wenn die Auswahl noch einmal wiederholt wird.

    HaRo
    Hallo ERD,

    genau das war es. So nah und doch so weit entfernt.
    Ich habe die DGVs weggeworfen und das DataSet etwas aufgeräumt. Du hast mit den Redundanzen ja Recht und das wollte ich jetzt sofort bereinigen.
    Die Bindings konnte ich behalten und war gerade am Wiederaufbau der Form, als mir das selbst aufgefallen war.

    Der Weg zur fertigen Applikation ist aber noch weit ...

    Danke und ein frohes Osterfest. :thumbsup: