User Tools

Site Tools


vba:classes:iterator:definition

Definitionen

Enumerator

itParams

'/**
' * Parameter zur Steuerung des Verhalten des Iterators
' * Die einzelnen Parameter sind mit + kombinierbar
' */
Public Enum itParams
    itNone = 0                          'Kein Parameter hat gültigkeit
    itNothingAsEmptyList = 2 ^ 0        'Leerer String, Nothing, Empty, Null wird als leere Liste akzeptiert und wirft kein Fehler
    itListNextNoParamsAsToNext = 2 ^ 1  'Wenn bei listNext keine Parameter angeben werden, einfach eins vorrücken.
    itErrorAtEmptyList = 2 ^ 2          'Fehler generieren, wenn die iListe leer ist
    itDaoValue = 2 ^ 3                  'Field-Value anstelle von Field ausgeben
    itIndexInsteadKey = 2 ^ 4                     'Gibt bei den toX() Funktionen den Index anstelle des Keys zurück
    itDefault = itNothingAsEmptyList + itListNextNoParamsAsToNext
    [_LAST] = 4
End Enum

Properties

Die Eigenschaften der Klasse.
r steht für Readable, w für writable

Properties zu den Daten

  • sourcerw Quellliste, über die Iteriert wird (Array, Collection etc.)
  • currentr Aktuelles Item
  • keyr Aktueller Key
  • indexr Aktueller Indes der Liste, beginnend mit dem listenspezifischen Anfang
  • absolutePositionr Absolute Position in der Liste, beginnend mit 0
  • BOFr Beginn of File. Wir sind vor dem ersten Eintrag
  • EOFr End of File. Wir sind nach dem letzten Eintrag
  • countr Anzahl Items in der Liste
  • isEmptyr Flag, ob überhaubt Einträge vorhanden sind: count=0

Propierties zur Iteratorsteuerung

Diese Properties sind die Einzeilzuordnungen zu itparams

  • Paramsrw Die Parameter als Enum-Set
  • paramNothingAsEmptyListrw Leerer String, Nothing, Empty, Null wird als leere Liste akzeptiert und wirft kein Fehler
  • paramListNextNoParamsAsToNextrw Wenn bei listNext keine Parameter angeben werden, einfach eins vorrücken.
  • paramErrorAtEmptyListrw Fehler generieren, wenn die iListe leer ist
  • paramDaoValuerw Field-Value anstelle von Field ausgeben
  • paramIndexInsteadKeyrw Gibt bei den toX() Funktionen den Index anstelle des Keys zurück

Methoden

Collection Class Methodes

Diese Funktionen dienesn dazu, dass die Klasse wie eine Collection genutzt werden kann.
http://msdn.microsoft.com/en-us/library/aa262338%28v=vs.60%29.aspx

NewEnum()

'/**
' * Der NewEnum wird für die For Each.. Next Schleife verwendet
' *
' * Diese Funktion hat das Attribut "'Attribute NewEnum.VB_UserMemId = -4"
' * !! Diese Iterierung hat keinen Einfluss auf die aktuelle Position !!
' *
' * @return Das nächste element
' */
Public Function NewEnum() As IUnknown

item()

'/**
' * Entspricht dem item()-Befehl der Listenobjekte
' * Alle 3 Propert-Funktionen aben das versteckte Attribut "Attribute item.VB_UserMemId = 0"
' * Dadurch kann mittels it(1), it("MyFeild"), it!MyField etc darauf zugegriffen werden.
' *
' * !! Das Verhalten dieser Funktion ist NICHT standartisiert. Sie entspricht dem entsprechenden Verhalten der Source !!
' *
' * @param  Variant Index/Key
' * @return Variant
' */
Public Property Get item(ByVal iIndex As Variant) As Variant

Initialisierungs-Methoden

initialize()

'/**
' * Initialisuert den Iterator
' * @param  Variant     Die Liste, über welche Iteriert werden soll
' * @param  itParams    Parameters
' * @return Boolean     true: iList ist eine Liste und hat Werte
' */
Public Static Function initialize( _
        ByRef iList As Variant, _
        Optional ByVal iParams As itParams = itDefault _
) As Boolean

initializeRs()

Die Parameters findest du hier. Sie sind mit + kombinierbar.

'/**
' * Analog zu initialze. Erstellt aber direkt ein Recordset aus einem SQL
' * @param  String      SLQ String
' * @param  itParams    Parameters
' * @return Boolean     true: iList ist eine Liste und hat Werte
' */
Public Static Function initializeRs( _
        ByVal iSql As String, _
        Optional ByVal iParams As itParams = itDefault _
) As Boolean

toNext()

'/**
' * Geht zum nächsten Datensatz. Der Key und er Datensatz werden als Parameter zurückgegeben, EOF als Return-Value
' * @param  Variant     Key oder pos des Items
' * @param  Variant     Das Item himself
' * @return Boolean     EOF
Public Function toNext( _
        Optional ByRef oKey As Variant = Null, _
        Optional ByRef oItem As Variant = Null _
) As Boolean

toPrev()

'/**
' * Geht zum nächsten Datensatz. Der Key und er Datensatz werden als Parameter zurückgegeben, EOF als Return-Value
' * @param  Variant     Key oder pos des Items
' * @param  Variant     Das Item himself
' * @return Boolean     EOF
Public Function toPrev( _
        Optional ByRef oKey As Variant = Null, _
        Optional ByRef oItem As Variant = Null _
) As Boolean

toFirst()

'/**
' * Geht zum ersten Datensatz.
' * Vorsicht, während reset() eins vor den ersten Datensatz geht, geht toFirst() bereits auf den ersten Datensatz
' * Somit ists das eigentlich reset()+toNext()
' * @param  Variant     Key oder pos des Items
' * @param  Variant     Das Item himself
' * @return Boolean     EOF
Public Function toFirst( _
        Optional ByRef oKey As Variant = Null, _
        Optional ByRef oItem As Variant = Null _
) As Boolean

toLast()

'/**
' * Geht zum nächsten Datensatz. Der Key und er Datensatz werden als Parameter zurückgegeben, EOF als Return-Value
' * @param  Variant     Key oder pos des Items
' * @param  Variant     Das Item himself
' * @return Boolean     EOF
Public Function toLast( _
        Optional ByRef oKey As Variant = Null, _
        Optional ByRef oItem As Variant = Null _
) As Boolean

toPosition()

'/**
' * Geht zum nächsten Datensatz. Der Key und er Datensatz werden als Parameter zurückgegeben, EOF als Return-Value
' * @param  Long        Absolute Position. Zwischen 0 und Count-1
' * @param  Variant     Key oder index des Items
' * @param  Variant     Das Item himself
' * @return Boolean     EOF
Public Function toPosition( _
        ByVal iAbsolutPosition As Long, _
        Optional ByRef oKey As Variant = Null, _
        Optional ByRef oItem As Variant = Null _
) As Boolean

listNext()

Siehe auch [VBA] list()

'/**
' * Rückt den Zeiger um Eins vor und gibt die Elemente einer Unterliste aus.
' * @paramArray Variant    Auflistung der Variablen, die abgefüllt werden
' * @return     EOF
' */
Public Function listNext( _
        ParamArray oParams() As Variant _
) As Boolean

list()

Siehe auch [VBA] list()

'/**
' * Ggibt die Elemente der aktuellen Unterliste aus.
' * @paramArray Variant    Auflistung der Variablen, die abgefüllt werden
' * @return EOF & BOF
' */
Public Function list( _
        ParamArray oParams() As Variant _
) As Boolean

reset()

'/**
' * Setzt den pos auf den Start-1 zurück, so dass bei einem toNext() der erste Datensatz kommt
' */
Public Sub reset()

subIterator()

Wenn das Current-Objekt selber wieder iterierbar ist, kann mit dieser Methode direkt ein Iterator für das Objekt erstellt werden.

'/**
' * Gibt current als Iterator zurück
' * @return Iterator
' */
Public Property Get subIterator() As Iterator

Iterierbare Listen

Die folgenden Datentypen werden vom Iterator als Liste erkannt und können iteriert werden

  • Array
  • Dictionary
  • Collection
  • RegExp.MatchCollection
  • RegExp.Match
  • Dao.Recordset
  • Dao.Fields
  • Dao.Field
  • Properties
vba/classes/iterator/definition.txt · Last modified: 08.07.2014 15:54:48 by yaslaw