User Tools

Site Tools


vba:classes:iterator:beispiele

Anwendungsbeispiele

inlinetoc

Die Beispiele sind unvollständig. Die Klasse hat noch einiges mehr auf Lager. Finde es heraus oder frag nach.

Iteration mit einem eindimensionalen Array

Einfachstes Beispiel mit einem Array

Public Sub testIt()
    Dim arr()   As Variant:         arr = Array(1, 2, 3)
    Dim it      As New Iterator:    it.initialize arr
 
    Do While it.toNext
        Debug.Print it.key & ": " & it.current
    Loop
End Sub

Dito, aber der Wert wird als Variable verarbeitet

Public Sub testIt()
    Dim arr()   As Variant:         arr = Array(1, 2, 3)
    Dim it      As New Iterator:    it.initialize arr
    Dim key     As Variant
    Dim val     As Variant
 
    Do While it.toNext(key, val)
        Debug.Print key & ": " & val
    Loop
End Sub

Von hinten nach vorne iterieren

Public Sub testIt()
    Dim arr()   As Variant:         arr = Array(1, 2, 3)
    Dim it      As New Iterator:    it.initialize arr
 
    it.toEOF
    Do While it.toPrev
        Debug.Print it.KEY & ": " & it.current
    Loop
End Sub

Und ein Array, der nicht bei 0 beginnt

Public Sub testIt()
    Dim arr(3 To 4)   As Variant
    Dim it      As New Iterator
    Dim key     As Variant
    Dim val     As Variant
 
    arr(3) = 33
    arr(4) = 44
    it.initialize arr
 
    Do While it.toNext(key, val)
        Debug.Print key & ": " & val
    Loop
End Sub

Iteration über einen 2 Dimensionalen Array

Mit direktem Auslesend er SubItems mit listNext()

Public Sub testIt()
    Dim arr(3 To 4)   As Variant
    Dim it      As New Iterator
    Dim v1, v2, v3
 
    arr(3) = Array(31, 32, 33)
    arr(4) = Array(41, 42, 44)
    it.initialize arr
 
    Do While it.listNext(v1, v2, v3)
        Debug.Print v1 & "-" & v2 & "-" & v3
    Loop
End Sub
31-32-33
41-42-44

Besipel mit MatchCoellection

Public Sub testIt()
    Dim rx  As New regExp
    Dim mc  As Variant
    Dim it  As Iterator
    Dim x, y
 
    rx.Global = True
    rx.pattern = "([A-H])([1-8])"
 
    Set mc = rx.execute("Springer von A1 auf B3")
    Set it = New Iterator: it.initialize mc
    Do While it.toNext
        Debug.Print it.current.value    'Den gesamten gefunden String ausgeben
        it.list x, y                    'Die 2 Submatches auf x und y verteilen
        Debug.Print x & ":" & y         'x & y ausegeben
    Loop
End Sub
A1
A:1
B3
B:3

Beispiele zu Recordset

Recordset durchiterieren

Public Sub testIt()
    'Initialiseren des Iterators über initializeRs
    Dim it As New Iterator: it.initializeRs "SELECT [id], [number_one], [number_two] FROM [_test]"
 
    'Jede ID ausgeben
    Do While it.toNext
        Debug.Print it!id
    Loop
 
    it.reset    'Postion zurücksetzen
 
    'Die Felder des Recordsets direkt in die Variablen übertragen
    Dim id, n1, n2
    Do While it.listNext(id, n1, n2)
        Debug.Print id, n1, n2
    Loop
 
End Sub
 1 
 2 
 3 
 4 
 1             11            21 
 2             12            22 
 3             13            23 
 4             14            24

FieldList durchiterieren - Ausgabe von current und value

Public Sub testIt()
    Dim v As Variant
 
    'Initialiseren des Iterators über initializeRs
    Dim it As New Iterator: it.initializeRs "SELECT [id], [number_one], [number_two] FROM [_test]"
 
    'Erste Zeile als [Fields] auslesen und neuen Iterator daruas erstellen
    it.toFirst
    Dim itFields As Iterator: Set itFields = it.subIterator
 
    Debug.Print "== Ausgabe: Property current"
    Do While itFields.toNext
        print_r itFields.current
    Loop
 
    Debug.Print "== Ausgabe: Property value"
    itFields.reset                  'position zurücksetzen
    Do While itFields.toNext
        print_r itFields.value
    Loop
 
    Debug.Print "== Ausgabe: Referenziertes Property current, Iterator mit dem Parameter DaoValue"
    itFields.reset                  'position zurücksetzen
    itFields.paramDaoValue = True   'Paraeter DaoValue setzen um das Verhalten von current zu ändern
    Do While itFields.toNext(, v)   'Der zweite Parameter von toNext() entspricht dem current
        print_r v
    Loop
 
End Sub
== Ausgabe Property current
<Field2>  (
    [OrdinalPosition] => <Integer> 0
    [name] => <String> 'id'
    [value] => <Long> 1
    [type] => <Integer> 4
)
<Field2>  (
    [OrdinalPosition] => <Integer> 1
    [name] => <String> 'number_one'
    [value] => <Long> 11
    [type] => <Integer> 4
)
<Field2>  (
    [OrdinalPosition] => <Integer> 2
    [name] => <String> 'number_two'
    [value] => <Long> 21
    [type] => <Integer> 4
)
== Ausgabe Property value
<Long> 1
<Long> 11
<Long> 21
== Ausgabe Property current, Iterator mit dem Parameter DaoValue
<Long> 1
<Long> 11
<Long> 21
vba/classes/iterator/beispiele.txt · Last modified: 26.03.2014 13:12:58 by yaslaw