mehrere Tabellen in Datagritview

  • VB.NET

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

    mehrere Tabellen in Datagritview

    Hallo

    Ich habe meine Tabelle gespalten um doppelte Einträge zu sparen
    nun möchte ich aber meine 3 Tabellen in einer datagritview anzeigen lassen.

    meine DB sieht so aus

    Tabelle1
    ID
    spalte1
    spalte2
    Spalte3

    Tabelle2
    id
    tabelle1_ID
    spalte1
    spalte2
    spalte3
    Hauptspalte_ID

    Tabelle3
    ID
    Tabelle1_ID
    Spalte1
    Spalte2
    Spalte3
    Hauptspalte_ID

    Ich habe mir auch diesen Beitrag und die Videos angeschaut https://www.vb-paradise.de/index.php/Thread/94955-die-vier-Views-auf-Video/?postID=798777#post798777

    Ich möchte aber das nicht in 3 Datagritview machen. Ich möchte das alles nur in einer Datagritview anzeigen lassen
    Hallo

    Ich habe lange im Google gesucht, aber leider nix gutes gefunden, ich habe das gefunden wie man mit Access per Code verbindet und das dann ausrufen kann. Aber so möchte ich das nicht haben.

    Ich habe mit Datenquellen die Verbindung zu meiner Datenbank (Access Datei) hergestellt.
    Dadurch würde ein DataSet, TableAdapter und ein BindingSource erstellt.

    Wie kann ich das jetzt mit BindingSource mein Datagrid füllen?

    z.b.

    Tabelle1.Spalte2 | Tabelle1.Spalte3 | Tabelle2.Spalte1 | Tabelle2.Spalte2 | Tabelle2.spalte3 | Tabelle3.Spalte2 | Tabelle3.Spalte3

    Hat mir jemand ein Beispiel wie ich das lösen könnte? ohne eine Verbindung mit Code aufzubauen sondern mit DataSet?
    weil im DataSet design habe ich die Verknüpfungen zu die einzelnen Tabellen gemacht.

    dema schrieb:

    Wie kann ich das jetzt mit BindingSource mein Datagrid füllen?
    Du hast kein Datagrid. Datagrid ist in WinForms ein veraltetes Control, zwar noch existent, aber niemand benutzt es noch.

    Und mit einer BindingSource kann man kein Datagridview füllen - man bindet ein DGV an eine BindingSource.

    dema schrieb:

    Hat mir jemand ein Beispiel wie ich das lösen könnte? ohne eine Verbindung mit Code aufzubauen sondern mit DataSet?
    mit einem Dataset baut man keine Verbindung auf, also kanns da auch kein Beispiel für geben.
    Ein Dataset befüllt man.

    Ansonsten kennst du ja schon einige Beispiele, wie man Daten präsentieren kann, aus den von dir verlinkten 4Views-Videos, aber so willst du es ja nicht haben.

    Edit:

    dema schrieb:

    Tabelle1.Spalte2 | Tabelle1.Spalte3 | Tabelle2.Spalte1 | Tabelle2.Spalte2 | Tabelle2.spalte3 | Tabelle3.Spalte2 | Tabelle3.Spalte3
    ich glaub ich komm erst jetzt drauf, was du damit meinst, mit 3 Tabellen in ein DatagridView.
    Aber Enttäuschung: Das geht einfach nicht.
    Ein DatagridView kann nur eine Tabelle anzeigen.
    Wenn du also 2 Tabellen hast, mit je 3 Spalten, dann musst du die Daten erst umfüllen in eine Tabelle mit 6 Spalten - die du dann anzeigen kannst.

    Meist ist sowas aber ein Fehler im Datenmodell. Also der Fehler könnte darin liegen, dass es überhaupt 2 Tabellen sind, wenn deren Daten doch offensichtlich in eine einzige gehören.
    Aber um sowas bestimmt sagen zu können muss man das Datenmodell analysieren.


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

    Vorweg - ich gehe nicht davon aus dass das ein Fehler im Datenmodell ist (wobei schon die konkrete Benamung der vom TE angegebenen Tabellenstruktur da hilfreiche Hinweise drauf geben würde ;) )
    Der Wunsch, Daten aus mehreren Tabellen in einer Übersicht anzuzeigen kommt jedenfalls öfters mal auf - gerade wenn man sich im Datenmodell strikt an die Normalisierung hält...

    Wie auch immer, der Hinweis von @hans im Glück die Übersicht mittels LINQ an die DataSource der BindingSource des DGV zu binden ist ein guter Weg.
    Die andere Möglichkeit wäre, dir in Access eine Abfrage zu erstellen die die Daten wie gewünscht aufbereitet und diese Abfrage dann in deinem DAtaset als Tabelle einzubinden.
    Ich halte es auch für einen Normalfall, dass Daten aus unterschiedlichen Tabellen zusammengefasst werden.
    Bsp. Kundendaten aus der Kundenstammtabelle, Belegkopfdaten aus der Belegkopftabelle, Belegpositionsdaten aus der Positionstabelle und Adressdaten aus der Adresstabelle (zB. gejoint über die Lieferadressnummer im Beleg)
    So wär ne sehr typische und auch völlig legitime Ansicht.
    Hierfür gibt es Views... innerhalb von Datenbanken. Die sind genau dafür da. Access nennts Abfragen....
    Ich behaupte mal von der Performance her ist nen Abruf einer View von ner Datenbank um ein Vielfaches fixer als sich das mit LINQ zusammenzubauen.
    Aber hier müsste man mal wissen, was da genau ansteht.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Ich halte es auch für einen Normalfall, dass Daten aus unterschiedlichen Tabellen zusammengefasst werden.
    Ja, in gewisser Weise ich ja auch. Nämlich wenn eine Relation zw. den zusammenzufassenden Tabellen besteht.

    Jetzt habich auch nochmal post#1 angeguckt, und finde tatsächlich Hinweise auf Relationen tabelle1_id.
    Dann weiß ich aber nicht, warum er mit dem 4-Views-Videos nicht klarkommt, in "JoiningView" ist doch gezeigt, wie man (ganz db-unabhängig) aus mehreren Tabellen Daten in eim DGV anzeigt.
    Vielleicht weil du nur im Video zeigst wie man jeweils EINE Spalte anstelle der ID anzeigst. und nicht mehrerererere.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Dann weiß ich aber nicht, warum er mit dem 4-Views-Videos nicht klarkommt, in "JoiningView" ist doch gezeigt, wie man (ganz db-unabhängig) aus mehreren Tabellen Daten in eim DGV anzeigt.


    Ich komme schon klar mit deinem Video die sind auch ganz super geworden und für mich war es auch sehr hilfreich.

    Aber ich möchte kein DataGridViewComboBoxColumn haben. (Damit ist es zwar möglich aber ich möchte keine auswahl haben)

    Ich möchte das ganze mit ein DatagridViewTextBoxColumn machen und hier ist das leider nicht möglich.

    dema schrieb:

    (Damit ist es zwar möglich aber ich möchte keine auswahl haben)
    Das Auswahl-Feature kann man einfach abstellen, indem man anne ComboColumn DropDownStyle.Nothing einstellt. Dann ist die für den User funktional nicht mehr von einer Readonly TextboxColumn zu unterscheiden.

    Alternativ kann man auch Readonly Zusatz-Spalten als "berechnete Spalten" gleich der DataTable zufügen - findich normalerweise bischen weniger schön, aber manchmal vorteilhaft für Filter und Sortierung.

    Aber probier erstmal das mit DropDownStyle.Nothing