Vergleich zweier DataGridView Spalten + Ergebnisausgabe

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Beogradjanin.

    Vergleich zweier DataGridView Spalten + Ergebnisausgabe

    Hallo,

    ich möchte gerne bestimmte Spalten zweier DataGridViews (inkl. DataTables) vergleichen. Die Übereinstimmungen sollen in einem 3. DataGridView, und der Rest in einem 4. DataGridView ausgegeben werden.

    DataGridView1 sieht in etwa so aus: Spalte 1 = ID, Spalte2=Titel, Spalte 3=Vorname, Spalte 4=Nachname, Spalte5=Telefonnummer, Spalte 6=Straße
    DataGridView2 sieht in etwa so aus: Spalte 1=Vorname, Spalte 2=Nachname, Spalte 3=Straße

    Mein Pseudo-Code würde in etwa so aussehen:

    Für jede DataGridView2.Zeile in Spalte 3
    Suche in DataGridView1.Zeile in Spalte 6
    Wenn gefunden, dann schreibe in DataGridView3 Spalte 1 bis 6 aus DataGridView1,
    ansonsten schreibe Spalte 1 bis 6 in DataGridView4

    Da hier aus DataGridView2 Personen in DataGridView1 nach den Straßen gesucht werden soll, hab ich mir überlegt, dass es passieren könnte, dass jem. z.B. die Straßennamen anders schreibt (wie Berliner Straße bzw. Berlinerstraße oder auch berlinerstraße).

    Deshalb hab ich mir überlegt, dass der Inhalt der aktuellen Zelle aus DataGridView2 (nach der ja in DataGridView1 gesucht werden soll) in eine StringBuilder-Variable abgespeichert werden soll.
    Bsp:
    Dim
    sb AsNew System.Text.StringBuilder(aktuelle Zelle von DataGridView2)

    sb.Replace(" ", "") 'entfernt die Leerzeichen

    Dann wäre noch die Umwandlung in Großbuchstaben (aber nur während des Vergleiches), damit auch jede Übereinstimmung gefunden wird...

    Also so: sb.tostring.toupper

    Evtl. macht es auch Sinn mit der Replace-Funktion ä in ae, ö in oe, ü in ue und ß in ss umzuwandeln.

    Meine Frage ist jetzt: Könnte mir jemand bei dem Code helfen und würde meine Vergleichsart Sinn machen? Auch bei einer Anzahl von extrem vielen Daten bzw. vergleichen??

    Hallo,

    meine Frage ist nun, wie ich anstatt für jede Zelle, einfach sagen kann, dass für jede Zeile aus der Spalte 6 (also so gesehen jede Zelle aus der Spalte 6) die Daten verglichen werden (hab die Zeile grün hinterlegt).

    VB.NET-Quellcode

    1. For Each ExcelRow As DataGridViewRow In FormDiverto.DataGridView2.Rows
    2. For Each ExcelCell As DataGridViewCell In ExcelRow.Cells(wenn der aktuelle Zelleninhalt von DataGridView2 Spalte 3 mit dem von DataGridview1 Spalte 6 übereinstimmt, liefer true, sonst nächste Zeile in DataGridview1 -> Bis letzte Zeile in DataGridView1.. Danach nehme die nächste Zelle von DataGridView2 Spalte 3 und Vergleiche mit jeder Zeile aus der Spalte 6 in DataGridView1)
    3. Next
    4. Next
    Das Beispiel habe ich bereits gesehen. Das Problem hierbei ist, dass z.B. keine Übereinstimmung bei den beiden folgenden Werten vorhanden sein wird:

    Wert1: Hanauer Landstraße

    Wert2: Hanauerlandstraße

    Hier soll jedoch eine Übereinstimmung stattfinden.

    Deshalb muss ich wohl mit dem LIKE-Operator arbeiten?!

    Gibt es eine Art NOT LIKE?

    Danke und schönen Tag noch!