bindingsource filter über relation

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Checkpoint.

    bindingsource filter über relation

    Dataset - 2 Tabellen - Datagridview mit Tabelle 1 - Details über Relation aus Tabelle 2

    Alle Daten aus Tabelle 1 kann man über Bindingsource filtern, kein Problem.

    Wie aber kann ich einen Filter setzen über Inhalte aus Tabelle2, die über Relation angebunden ist?

    VB.NET-Quellcode

    1. BindingSource2.DataSource=BindingSource1
    2. BindingSource2.DataMember="NameDerDataRelation"


    mach das blos im Designer - codeseitig kann man sich da leicht vertun.

    ok - dassis gemein, genauso kryptisch zu antworten, wie die Frage ist.

    Also die Frage ist uneindeutig, denn "Details anzeigen" kann dreierlei bedeuten, was jeweil unterschiedlich zu behandeln wäre.

    Mit "Details" kann gemeint sein:
    1. Daten aus einer übergeordneten Tabelle, auf die per Foreignkey verwiesen wird
    2. Daten aus einer untergeordneten Tabelle, die auf die aktuelle Tabelle verweisen
    3. Werte aus derselben Tabelle, aber detailreicher präsentiert

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

    es sind Daten aus einer untergeordneten Tabelle, die auf die aktuelle Tabelle verweisen.

    Beispiel: Tabelle1 = Artikel, Tabelle2 = Verpackung, Relation über Verpackungs-Nr.; Dem Artikel ist eine Verpackung zugeordnet (dann steht die Verpackungsnummer in der Tabelle Artikel) oder nicht, dann ist Feld Verpackung im Artikel leer.

    Datagridview Artikel - daneben kann man leicht die Detaildaten der Verpackung anzeigen.

    Wie macht man dann aber eine Suche, wie "Alle Artikel, deren Verpackung im Text rechteckig hat"

    Das Textfeld ist nicht im Datagridview und auch nicht in der Bindingsource des Artikels.

    Problem verstanden?
    ähm - Verpackung ist die übergeordnete Tabelle, weil:

    Checkpoint schrieb:

    Dem Artikel ist eine Verpackung zugeordnet
    Die zum Artikel gehörende Verpackung abzurufen wäre ein JoiningView, das würdeman mit Comboboxen lösen. gugge vier Views


    Leider unlösbar ist:

    Checkpoint schrieb:

    oder nicht, dann ist Feld Verpackung im Artikel leer.
    Comboboxen können nur Daten anbieten, die da sind. "Leer" können sie nicht anbieten, und werfen eine Exception.
    Dass das mit einer neuen View geht ist klar, nur geht es auch aus der aktuellen View heraus?

    Sprich ich habe ein Datagridview Artikel, zeige daneben direkt die Artikeldetails an inkl. Verpackungsdaten (was ja leicht geht über Relation).

    In dieser View gibt es Suchoptionen auf den Artikel und ich hätte gerne auch auf die Verpackungsdaten gesucht.

    Checkpoint schrieb:

    sondern die Artikel die in der Verpackung einen bestimmten Parameter haben.

    VB.NET-Quellcode

    1. artikelbindingsource.Filter = "VerpackungID = 12"
    das würde alle Artikel auswerfen, deren VerpackungID 12 ist. 12 könnte etwa die ID von PapierVerpackungen sein.

    Aber ich bin draußen ausse Diskussion.
    Ich habe dir gesagt, dasses eine 1:n - Relation von Verpackung->Artikel ist (nicht umgekehrt), habe dir Beispiele aller möglichen Views gegeben, die man aus so einer Relation konstruiren kann, und auch beispiele zum Einsatz des Filters.

    Damit müsstest du zumindest irgendetwas zusammenbasteln können.
    hab mir was gebastelt, wenns auch umständlich erscheint:

    - Neuer Table mit Join Arikel und Verpackungen (dann hab ich dort auch gleich nur Artikel die eine Verpackung haben)

    - dort setze ich den gewünschen Filter und lese alle artikelnummer in eine List of integer

    - diese List of integer verwende ich dann als Filter für die Artikel

    Führt zum gewünschtem Ergebnis "Alle Artikel, die bei der Verpackung einen bestimmten Parameter erfüllen", auch wenn die Daten nicht in der Binding bzw. im Datagridview stehen.