DataGridView suche und erhöhe !

NReim

Grünschnabel
Hall Liebe Forengemeinde

Ich habe mal wieder eine Frage an die Breite Masse hier !!

Es Dreht sich um folgendes, Ich Lese mit meinem Programm ( VB 2005 Express ) einige Daten aus einem Anderem Programm ein ( CATIA, CAD System ) Dort durchlaufe ich dir Produktstruktur und hole mir die Informationen über die verbauten Teile raus.
Jetzt ist es so das ein Teil innerhalb einer Baugruppe mehrmals verbaut sein kann ( z.B. eine Schraube ) diese Teile haben alle eine Artikelnummer ...

Lange rede kurzer sinn :
Es läuft schon alles soweit das ich die Daten im Meinem DataGridView darstellen kann, nur möchte ich halt gerne das ich nicht 20 Reihen mit ein und der selben Schraube füllen möchte ( wenn die z.B. 20 mal verbaut worden ist ) sondern das sie mir in einer Reihemit der Stückzahl 20 angezeigt wird ...

Ich würde also gerne eine Funktion Realisieren die prüft: Ist das Teil schon im DataGridView ( Spalte ) vorhanden, wenn JA dann soll er mir die Zelle mit den Stückzahlen um +1 erhöhen und KEINE neue Reihe einfügen.

Wie gesagt das Teil würde ich immer über die Artikelnummer ausfindig machen können

Ich wäre euch dankbar über einen Denkanstoß wie ich einen Eintrag in meinem DGV ausfindig machen könnte um dann in dieser reihe die Stückzahl zu erhöhen

Mfg: Nico
 
In dem Fall wäre es besser du würdest nicht das DataGrid durchlaufen und prüfen, sondern gleich das DataGrid mit einer SQL-Abfrage füllen, die das für dich macht.

Nur Anhand der Teilenummer würd die etwa so aussehen:

SELECT Teilenummer, COUNT(Teilenummer)
FROM Tabelle
GROUP BY Teilenummer

Wie füllst du dein DataGrid?
 
Also Das Datagrid wird folgendermaßen gefüllt

Ich durchlaufe mit meiner Rekursiven Suchroutine die Teilestruktur innerhalb von CATIA.
Aus den Teilen die gefunden werden, werden diverse Parameter ausgelesen u.a die Artikelnummer.

Diese gefundenen Daten werden über den die Befehlsfolge
Code:
Dim Zeile As New DataGridViewRow

        Zeile.CreateCells(dgv_wdxcheck)

        Zeile.Cells(0).Value = currentprod.PartNumber
        Zeile.Cells(1).Value = partdetailname
        Zeile.Cells(2).Value = > HIER SOLL DIE STÜCKZAHL ERHÖHT WERDEN <
        Zeile.Cells(3).Value = currentprod.Revision
        Zeile.Cells(4).Value = status
        Zeile.Cells(5).Value = detailname

        dgv_wdxcheck.Rows.Add(Zeile)

Es gibt also keine SQL Tabelle o.ä. sondern die Daten werden Native aus der Produktstruktur ausgelesen ( WAS JA SUPER FUNKTIONIERT ) Nur habe ich dann im Data Grid View nicht ( Schraube xyz ; menge: 20 ) stehen sondern 20 mal untereinander Schraube xyz ...

Ich hoffe das ist einigermaßen verständlich


ALTERNATIVE:

Alternativ bin ich grade dabei das ganze nicht mit einem DGV umzusetzen sondern mit einem LIST VIEW Das geht um einiges einfacher wie es scheint da das List view eine Suchroutine mitbringt -> listView.FindItemWithText

Könntest du mich hierbei mit bisschen code versorgen der mir dabei hilf die entsprechende Zeile hoch zu zählen ....

PS: Hier mal ein bisschen Code mit dem ich beim List View grade Arbeite

Code:
Dim searchpart As ListViewItem = lv_wdx.FindItemWithText(currentprod.PartNumber)

        If searchpart IsNot Nothing Then ' Wenn das Part schon in der Liste Existiert

 HIER MÜSSTE ICH JETZT IRGENDWIE DEN ZÄHLER HOCHSETZTEN 

        Else 'Wenn das Part noch NICHT in der Liste Existiert

            lv_wdx.Items.Add(count)
            lv_wdx.Items.Item(count).SubItems.Add(currentprod.PartNumber)
            lv_wdx.Items.Item(count).SubItems.Add(partdetailname)

            lv_wdx.Items.Item(count).SubItems.Add("Z Ä H L E R")

            lv_wdx.Items.Item(count).SubItems.Add(currentprod.Revision)

        End If

        count = count + 1

Ich Danke euch ( Dir ) für die Mühe !

Mfg: Nico
 
Zuletzt bearbeitet:
Ich habe es mit der List Box jetzt selber hin bekommen ...

Hier mein Code damit andere suchende nicht genauso so dumm Sterben wie ich ..
Code:
Dim searchname As ListViewItem = LISTVIEW.FindItemWithText("SUCHTEXT")
        Dim lv As ListViewItem

        If searchname IsNot Nothing Then ' Wenn das SUCHWORT schon in der Liste Existiert

            searchname.SubItems.Item("SPALTENNUMMER").Text = (CInt(searchpart.SubItems.Item("SPALTENNUMMER").Text) + 1).ToString

        Else

            lv = LISTVIEW.Items.Add("INDEX EINTRAG")
            lv.SubItems.Add("EINTRAG SPALTE 2")
            lv.SubItems.Add("1") <- DAS HIER IST SPALTE 2 DIE, DIE HOCH GEZÄHLT WERDEN SOLL
            lv.SubItems.Add("EINTRAG SPALTE 3")

        End If


Ich hoffe ich kann damit einigen suchenden helfen...

Mfg: Nico
 

Neue Beiträge

Zurück