vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Stückliste rekursiv durchlaufen 
Autor: Manfred X
Datum: 07.01.17 09:29

Hallo!

Hier ein Beispiel, bei der die hierarchische Datenstruktur
in Treeview-Knoten eingetragen ist.
Die Funktion ermittelt alle Knoten-Pfade, in der ein bestimmter Eintrag
vorkommt und schreibt diese Pfade in eine Liste.

In einem weiteren Schritt ist jeder dieser Pfade zu zerlegen
(Split -- String-Array)
und jeweils alle Werte zwischen Hauptknoten und gesuchtem Eintrag
sind vermutlich für Deinen Fall relevant.

Public Class frmFindTreeNodes
 
    Dim WithEvents trv As New TreeView With {.Parent = Me}
 
 
    Private Sub frmFindTreeNodes_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        'testdaten
        Dim tn As TreeNode = trv.Nodes.Add("Art1")
        tn = tn.Nodes.Add("Art1-1")
        tn = tn.Nodes.Add("krit")
 
        tn = trv.Nodes.Add("Art2")
        tn = tn.Nodes.Add("Art2-1")
        tn = tn.Nodes.Add("Art2-2")
        tn = tn.Nodes.Add("krit")
 
        tn = trv.Nodes.Add("Art3")
        tn = trv.Nodes.Add("krit")
 
        Dim pathlist As New List(Of String)
 
        FindPaths(trv.Nodes, "krit", pathlist)
 
        For i As Integer = 0 To pathlist.Count - 1
            Console.WriteLine(pathlist(i))
        Next i
    End Sub
 
 
    ''' <summary>Suche nach den Knoten-Pfaden, die einen bestimmten Text 
    ' enthalten</summary>
    ''' <param name="tnc">zu durchsuchende Knoten-Auflistung</param>
    ''' <param name="Text">zu suchender Text (Groß-/Kleinschreibung 
    ' ignoriert)</param>
    Private Sub FindPaths(tnc As TreeNodeCollection, _
        ByVal Text As String, ByRef pathlist As List(Of String))
 
        If String.IsNullOrEmpty(Text) Then pathlist = Nothing : Exit Sub
 
        Dim TextToFind As String = Text.Trim.ToLower
 
        For Each tnCurr As TreeNode In tnc
            If tnCurr.Text.Trim.ToLower = TextToFind Then
                pathlist.Add(tnCurr.FullPath)
            End If
 
            'rekursiv weitersuchen 
            FindPaths(tnCurr.Nodes, Text, pathlist)
        Next tnCurr
 
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Stückliste rekursiv durchlaufen 
Autor: Suspeka
Datum: 07.01.17 00:56

Hallo Community,

ich versuche verzweifelt Stücklistenbenen von unten nach oben zu laufen
Ich habe einen Artikel der irgendwo in einer Stücklistenebene steht
Nun benötige ich alle Artikel zwiwchen dem Artikel und dem hauptartikel

Also als Beispiel:
Artikel = "4711"
Dieser Artikel ist in der Stückliste vom "4712"
Und der Artikel "4712" ist in der Stückliste vom "4713"
Und der Artikel "4713" ist in dem Artikel "Hauptartikel"

Jetzt geht ich auf die Suche mit Artikel "4711" und brauche dann folgende Ausgabe:
Gefundene Artikel
4712
4713
Hauptartikel

Dabei können die Ebenen zwischen den Artikel x sein

Dane für eure Hilfe

Suspekta
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stückliste rekursiv durchlaufen 
Autor: Franki
Datum: 07.01.17 02:21

Hallo,

dazu kann man dir keinen Hinweis geben ohne zu wissen wie du deine Stücklisten, bzw. die Ebenen der einzelnen Artikel aufgebaut hast.

Wie speicherst du die Daten? In einer Datenbank vermute ich mal, da kommt es darauf an wie die Tabellen organisiert sind. Könnte auch eine Textdatei sein aber auch hier kann man ohne deren genaue Struktur keine Antwort geben.

Dass 4711 zu 1412 gehört muss ja irgendwo gespeichet sein. Und nur wenn man die Zugehörigkeit kennt kann man sie auch wieder reproduieren.

Also etwas genauere Informationen braucht man hier schon...

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stückliste rekursiv durchlaufen 
Autor: sv00010
Datum: 07.01.17 09:12

Du musst herausfinden was die unterste Ebene ist und dann alle Einträge dieser Ebene z.B. Ebene 5 in eine Gesamtliste eintragen.

Structure Gesamtartikel
 Dim strArtikel As String
 Dim strPfad As String
End Structure
 
Dim Gesamtliste_Ebene5 As System.Collections.Generic(Of Gesamtartikel)
Statt strPfad könnte auch ein Array oder eine Liste genommen werden, wo man sich merkt auf welcher Ebene man gerade ist.
Dann die Gesamtliste nach dem zu suchenden Wert durchsuchen.
Wenn dort nichts gefunden wurde, dann das selbe auf einer Ebene höher wiederholen usw.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stückliste rekursiv durchlaufen 
Autor: Suspeka
Datum: 07.01.17 09:13

Hallo Frank,

Danke für deine Antwort

die Daten sind in einer MySQL Tabelle gespeichert
In meinem Beispiel sieht die Tabelle so aus:

Hauptartikel | Unterartikel | Menge
4712 | 4711 | 50
4713 | 4712 | 20
Hauptartikel | 4713 | 1

Ich hoffe das ist so verständlich

LG
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stückliste rekursiv durchlaufen 
Autor: Suspeka
Datum: 07.01.17 09:25

Hi,

sorry aber das versteh ich nicht ^^

ich habe ja den Artikel 4711 nun möchte ich herausfinden in welcher Stückliste dieser Artikel steht
in meinem Beispiel unter 4712, jetzt suche ich quasi neu mit dem Artikel 4712 in welcher Stückliste dieser Artikel steht und finde in meinem Beispiel 4713, nun möchte ich wieder wissen in welcher Stückliste dieser Artikel steht und finde Hauptartikel und möchte ich wissen in welcher Stücklist Hauptartikel steht und finde nix mehr also weiß ich nun nach Hauptartikel gibt es keine Ebene mehr

Es kann natürlich auch vorkommen, dass z.B. Artikel 4712 in meheren Stücklisten vorkommt, dann muss ich alle diese Artikel finden

Danke
Suspekta
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stückliste rekursiv durchlaufen 
Autor: Manfred X
Datum: 07.01.17 09:50

Hallo!

Falls ich Deine Tabelle richtig verstehe, ist sie unvollständig.
Es gibt offenbar Abhängigkeiten (Hierarchie) zwischen den Datensätzen.

In dem Fall benötigst Du eine Primärschlüsselspalte, die eine
eindeutige Indentifikation der Sätze ermöglicht.
Zudem benötigst Du eine weitere Spalte für die Angabe der Hierarchie,
in der jeweils der Schlüssel des nächsten untergeordneten Satzes
(oder -1 am Ende der Hierarchie) eingetragen ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel