none
ADO ADODB Schleife for each

    Frage

  • Hallo Experten!

    Gibt es für ein ADO-Recordset eine Möglichkeit, eine FOR EACH-Schleife über alle Datensätze zu bilden? Also:

    Dim ARS as new ADODB.Recordset
    Dim oMeineZeile as Object

    ARS.Open "blablabla"
    For Each oMeineZeile in ARS.<Datenmenge>
     tu was
    next oMeineZeile

    Natürlich würde es auch mit einer Zählschleife gehen, aber FOR EACH ist einfach schöner :-)

    Danke für Tipps

    Raimund Gryszik, Berlin

    Mittwoch, 8. Dezember 2010 08:37

Antworten

  • Hallo!

    IT-Designer schrieb:

    Gibt es für ein ADO-Recordset eine Möglichkeit, eine FOR EACH-Schleife über alle Datensätze zu bilden? Also:
    [...]
    For Each oMeineZeile in ARS.<Datenmenge>
     tu was next oMeineZeile

    Falls du

    dim rec as ADODB.Record
    For Each rec in ARS.Records

    suchst, hast du Pech. ;-)

    Ich verwende zum Durchlaufen eines Recordsets eine do-loop-Schleife.

    do while not ARS.EOF
       tu was
       ARS.MoveNext
    loop

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Mittwoch, 8. Dezember 2010 09:11
  • hallo Raimund,

    Nö, gibts nicht.

    Was spricht gegen

    Do While Not ARS.Eof
      ARS.MoveNext
    Loop

    btw, benutze nicht New in der Deklaration, es funktioniert in VBA anderst als in VB

    Public Sub TestDimNew()
       Dim rs As New ADODB.Recordset
       If Not rs Is Nothing Then MsgBox "Yeah, a recordset!"
       Set rs = Nothing
       If Not rs Is Nothing Then MsgBox "Damn, another recordset!"
    
    End Sub

    Die zweite MsgBox sollte eigentlich nicht kommen, aber in VBA erzeugt das New in der Dim-Anweisung immer ein neue Instanz wenn keine (mehr) existiert.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Mittwoch, 8. Dezember 2010 11:27
    Moderator

Alle Antworten

  • Hallo!

    IT-Designer schrieb:

    Gibt es für ein ADO-Recordset eine Möglichkeit, eine FOR EACH-Schleife über alle Datensätze zu bilden? Also:
    [...]
    For Each oMeineZeile in ARS.<Datenmenge>
     tu was next oMeineZeile

    Falls du

    dim rec as ADODB.Record
    For Each rec in ARS.Records

    suchst, hast du Pech. ;-)

    Ich verwende zum Durchlaufen eines Recordsets eine do-loop-Schleife.

    do while not ARS.EOF
       tu was
       ARS.MoveNext
    loop

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Mittwoch, 8. Dezember 2010 09:11
  • hallo Raimund,

    Nö, gibts nicht.

    Was spricht gegen

    Do While Not ARS.Eof
      ARS.MoveNext
    Loop

    btw, benutze nicht New in der Deklaration, es funktioniert in VBA anderst als in VB

    Public Sub TestDimNew()
       Dim rs As New ADODB.Recordset
       If Not rs Is Nothing Then MsgBox "Yeah, a recordset!"
       Set rs = Nothing
       If Not rs Is Nothing Then MsgBox "Damn, another recordset!"
    
    End Sub

    Die zweite MsgBox sollte eigentlich nicht kommen, aber in VBA erzeugt das New in der Dim-Anweisung immer ein neue Instanz wenn keine (mehr) existiert.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Mittwoch, 8. Dezember 2010 11:27
    Moderator
  •  

    Danke an alle!

    Muss ich wohl doch zu meiner do loop - Schleife zurückkehren. (Nebenbei: meine Coding-Beispiele sind natürlich aufs Minimum, also auf den Focus, reduziert!)

    Raimund

    Donnerstag, 9. Dezember 2010 13:45