2 DataGridView mergen - Ansatz und Hilfestellung gesucht

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von HenryV.

    2 DataGridView mergen - Ansatz und Hilfestellung gesucht

    Hallo,

    ich muss zwei Datenmengen mergen.

    Meine bisherige Vorgehensweise ist, beides in je ein DataGridView zu importieren.

    Das habe ich soweit hinbekommen.

    DGV 1 ist z.B.

    Nr.NameWert1Wert2
    0024Müller3465
    2045Meier62580.25


    Dann habe ich DGV 2 das z.B. so aussieht

    Nr. NameWert3
    0024Müller628
    0768Hallo12548


    Jetzt soll daraus z.B. DGV 3 werden, dass ich dann später als Exportieren kann.

    Nr. NameWert 3Wert 1Wert 2
    0024Müller6283465
    2045Meier
    62580.25
    xxxxxxxxxxxxxxx


    D.h. ich suche eine Lösung
    um 1. DGV 1 um die Spalte Wert 3 zu erweitern und dann
    für jede Zeile in DGV 2 in DGV 1 zu suchen und falls vorhanden entsprechend zu ergänzen, oder falls das einfacher sein sollte, auch ein DGV 3 zu erstellen, das beide DGVs mergt.

    Bin um jede Hilfestellung oder Hinweise wie man das am besten angeht dankbar!
    @benk Trenne Daten und GUI.
    Ein DataGridView dient der Anzeige von tabellarischen Daten.
    Tabellarische Daten werden in DataTables gehalten.
    DataTables werden angezeigt, indem man sie einem DataGridView als DataSource zuweist.
    Pack Deinen Roh-Daten in je eine DataTable.
    Mach Dire eine Merge-DataTable und führe dort die Daten zusammen.
    Wenn die Daten kompatibel sind, verwende die DataTable.Merge-Methode: docs.microsoft.com/en-us/dotne…e?view=netframework-4.7.2
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Woher kommen die Daten? Denn ich rieche Datenredundanz. In allen Tabellen scheint 0024=Müller. Wenn man die Daten sauber in Datentabellen (Stichwort DataTable, ggf. DataSet (tDS)) trennt/aufteilt, kann man sehr gut mit beliebigen DGVs die Daten zusammenschustern. Ohne eigenen Code zu schreiben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Die Daten stammen aus zwei Excel Tabellen die aus zwei verschiedenen Anwendungen exportiert werden.

    Leider war keiner der Hersteller der Anwendungen bereit entsprechende Erweiterungen und/oder weitere Schnittstellen zu implementieren, weil: Sie können das ja nach Excel exportieren und dann weiterverarbeiten.

    Da unsere Geschäftsleitung jedoch die Werte aus beiden Tabellen benötigt um Verhandlungen mit Lieferanten zu führen, und es sehr unübersichtlich ist, jeweils in 2 Tabellen zu suchen, soll ich aus beiden (auf Knopfdruck der GL) eine Tabelle (oder Ansicht) erzeugen.

    Da die Tabellen aber nicht kompatibel sind, scheidet Copy / Paste aus, da zwar immer 2 Werte übereinstimmen (ID und Name des Lieferanten) aber nicht jeder Lieferant in der jeweils anderen Tabelle enthalten ist. Meist sind in der 2. Tabelle nur die hälfte der Lieferanten enthalten. Daher müssen die sozusagen "zusortiert" werden, wenn vorhanden.
    Hmok. Ich hätte jetzt einen automatisierten Excel-Import im Sinn, die die Daten in je ein DGV schieben. Danach müssten letztenendes wohl die Daten quasi manuell zusammengestückelt* und am besten in ne tDS-DataTable geschoben werden. Vielleicht erweist sich das tDS-Verwenden als Overkill, aber ich würde es immer aus Prinzip schon machen, denn irgendwann brauch ich immer ein tDS.

    *D.h. man sagt, dass folgende Daten einen Datensatz ergeben: Spalte 1, 2, 3 aus Tabelle1 + Spalte 7 und 1 aus Tabelle2. Diese lässt man per Code stupide in ein DGV3/eine DataTable zusammenpacken und hat dann die Datensätze. Ist natürlich alles sehr allgemein, aber vom Prinzip her ...
    Wäre das ein gangbarer Weg? Wenn nicht: warum?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Leider bin ich noch nicht wirklich weiter gekommen, vielleicht könnte ich noch etwas Hilfe erhalten.
    Eingelesen werden beide Excel Dateien wie folgt:

    Quellcode

    1. Dim MyConnection As System.Data.OleDb.OleDbConnection
    2. Dim DtSet As System.Data.DataSet
    3. Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    4. If dateiUmsatz.ToLower.EndsWith(".xlsx") Then
    5. MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dateiUmsatz & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';")
    6. Else
    7. MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dateiUmsatz & ";Extended Properties='Excel 8.0';")
    8. End If
    9. MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Tabelle1$]", MyConnection)
    10. MyCommand.TableMappings.Add("Table", "Net-informations.com")
    11. DtSet = New System.Data.DataSet
    12. MyCommand.Fill(DtSet)
    13. dgvUmsatz.DataSource = DtSet.Tables(0)
    14. MyConnection.Close()


    Das gleiche mache ich auch mit einer zweiten Excel Datei.
    Der Unterschied im Code bei der zweiten Excel Datei ist die Vorletzte Zeile

    Quellcode

    1. dgvBoni.DataSource = DtSet2.Tables(0)


    Wie kann ich die beiden dgvUmsatz (DtSet) und dgvBoni (DtSet2) jetzt mergen?
    Danke!

    VB.NET-Quellcode

    1. DtSet.Merge(DtSet2)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.