vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

Visual-Basic Einsteiger
Re: Hierarchisches Sortieren eines 2D-Array (HierarchicSort) 
Autor: Manfred X
Datum: 25.12.09 17:56

Der letzte Teil ...


        Public Function HierarchicSort(ByRef Array_To_Sort As Variant, _
                ByRef SortInfo() As tpSortInf) As String
 
            'Hierarchisches Sortieren eines 2D-Array (1.Dim) nach
            'ein- oder mehreren Spalten (= 2.Dimension)
 
            'Bei einem Fehler ist der Rückgabestring nicht leer, sondern
            'enthält die Fehlermeldung
 
            If VarType(Array_To_Sort) < vbArray Then
                HierarchicSort = "Kein Array als Parameter übergeben"
                Exit Function
            End If
 
            'Grenzen des Array abfragen
            Dim FirstCol As Integer: FirstCol = LBound(Array_To_Sort, 2)
            Dim LastCol As Integer: LastCol = UBound(Array_To_Sort, 2)
            Dim FirstRow As Integer: FirstRow = LBound(Array_To_Sort, 1)
            Dim Lastrow As Integer: Lastrow = UBound(Array_To_Sort, 1)
 
            'Grenzen der Sortierangaben abfragen
            Dim FirstSortInfo As Integer: FirstSortInfo = LBound(SortInfo)
            Dim LastSortInfo As Integer: LastSortInfo = UBound(SortInfo)
 
            Dim ErrorMessage As String
 
            Err.Clear
            On Error GoTo errorexit
 
            'Sortieranweisungen überprüfen
            Dim sinf, sinf2, cind As Long
            For sinf = FirstSortInfo To LastSortInfo
                cind = SortInfo(sinf).ColumnIndex
                If cind < FirstCol Or cind > LastCol Then
                   HierarchicSort = "Sortierspalte: ungültiger Index"
                   Exit Function
                End If
                For sinf2 = sinf + 1 To LastSortInfo
                    If cind = SortInfo(sinf2).ColumnIndex Then
                          HierarchicSort = "Sortierspalte wird doppelt" & _
                            "verwendet"
                          Exit Function
                    End If
                Next sinf2
            Next sinf
 
            'zunächst Sortieren des Array nach der hierarchisch höchsten Spalte
            If Not QuickSort_ArrayColumn(Array_To_Sort, SortInfo( _
              FirstSortInfo).ColumnIndex, _
            FirstRow, Lastrow, SortInfo(FirstSortInfo).SortAscending, _
            ErrorMessage) Then
                HierarchicSort = ErrorMessage: Exit Function
            End If
 
            Dim row, irow As Integer, abb, iabb As Boolean
            Dim i, k As Integer
            'Schleife über die nachgeordneten Sortier-Anweisungen
            For sinf = FirstSortInfo + 1 To LastSortInfo
                row = FirstRow - 1: abb = False
                'Arrayzeilen durchlaufen
                While row < Lastrow And Not abb
                    'Suche nach einem Abschnitt identischer Werte in den 
                    ' hierarchisch
                    'übergeordneten Spalten
                    row = row + 1: irow = row: iabb = False
                    While irow < Lastrow And Not iabb
                        irow = irow + 1
                        'wechselt der Wert in einer übergeordneten Spalte? 
                        ' --> Bereich endet
                        For i = FirstSortInfo To sinf - 1
                            If (Array_To_Sort(irow, SortInfo(i).ColumnIndex) <> _
                            Array_To_Sort(row, SortInfo(i).ColumnIndex)) Then _
                            iabb = True
                        Next i
                    Wend
                    If Not iabb Then irow = irow + 1 'Letzte Zeile einbeziehen
 
                    If irow > row + 1 Then
                        'Abschnitt gefunden: nach aktueller Sortierspalte 
                        ' sortieren
                        If Not QuickSort_ArrayColumn(Array_To_Sort, SortInfo( _
                          sinf).ColumnIndex, _
                        row, irow - 1, SortInfo(sinf).SortAscending, _
                        ErrorMessage) Then
                            HierarchicSort = ErrorMessage: Exit Function
                        End If
                    End If
 
                    'Nächsten Abschnitt ermitteln (oder beenden)
                    row = irow - 1: abb = irow >= Lastrow
                Wend
            Next sinf
 
            'Routine korrekt beendet: Leerstring zurückgeben
            HierarchicSort = "": Exit Function
 
errorexit:
            HierarchicSort = Err.Description
 
        End Function


Beitrag wurde zuletzt am 25.12.09 um 17:59:49 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mehrdimensionales Array mehrfach sortieren5.395FISO23.12.09 05:23
Re: Mehrdimensionales Array mehrfach sortieren4.677Zardoz23.12.09 05:37
Re: Mehrdimensionales Array mehrfach sortieren4.418FISO23.12.09 06:35
Re: Mehrdimensionales Array mehrfach sortieren4.609Dirk23.12.09 09:58
Re: Mehrdimensionales Array mehrfach sortieren4.397FISO23.12.09 22:24
Re: Mehrdimensionales Array mehrfach sortieren4.372Dirk24.12.09 00:32
Re: Mehrdimensionales Array mehrfach sortieren4.572FISO24.12.09 00:38
Re: Mehrdimensionales Array mehrfach sortieren4.632Danzi28.12.09 09:07
Re: Mehrdimensionales Array mehrfach sortieren4.790FISO29.12.09 08:21
Re: Mehrdimensionales Array mehrfach sortieren4.666Rippler29.12.09 16:59
Re: Mehrdimensionales Array mehrfach sortieren4.438Dirk29.12.09 19:13
Re: Mehrdimensionales Array mehrfach sortieren4.497Dirk29.12.09 19:19
Re: Mehrdimensionales Array mehrfach sortieren4.719Dirk29.12.09 19:13
Re: Mehrdimensionales Array mehrfach sortieren4.796Manfred X24.12.09 07:55
Demo-Code: Hierarchisches Sortieren eines 2D-Array (Hilfsfun...4.685Manfred X25.12.09 17:51
Hierarchisches Sortieren eines 2D-Array (Quicksort)5.244Manfred X25.12.09 17:53
Re: Hierarchisches Sortieren eines 2D-Array (HierarchicSort)4.660Manfred X25.12.09 17:56
Re: Hierarchisches Sortieren eines 2D-Array (Beispiel)4.790Manfred X25.12.09 18:08
Re: Hierarchisches Sortieren eines 2D-Array (Beispiel)4.579FISO26.12.09 00:03

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-2025 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