recordset verschachtelt

deusfalsus

Erfahrenes Mitglied
Salvete!

per sql Abfrage öffne ich ein Recordset
Code:
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF

Innerhalb dieser Schleife generiere ich eine neue Abfrage sql2
Code:
Set rs2 = db.OpenRecordset(sql2, dbOpenDynaset)
Dieses zweite Recordset kommt aber nicht über den ersten Datensatz hinaus.
"rs2.RecordCount" ergibt immer maximal 1.
wenn ich zur Überprüfung das Abfrageergebnis in eine Tabelle schreibe, erhalte ich die richtige Ergebnismenge.

Hier nochmal der Code für den Gesamteindruck:
Code:
sql = "SELECT tbl_temp1.t607_KONSERV, tbl_temp1.T607_ENTN_DAT, tbl_temp1.T607_T002_KL_SER FROM tbl_temp1"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
rs.MoveFirst
While Not rs.EOF
    Dvon = rs(1) - 1826
    Dbis = rs(1) - 1
    Dvon = Replace(Format(Dvon, "mm/dd/yyyy"), ".", "/", 1, 7)
    Dbis = Replace(Format(Dbis, "mm/dd/yyyy"), ".", "/", 1, 7)
    sql2 = "SELECT HIMEDX_HIXT607.T607_KONS_NR, HIMEDX_HIXT607.T607_ENTN_DAT " & _
           "FROM HIMEDX_HIXT607 " & _
           "WHERE (((HIMEDX_HIXT607.T607_T002_KL_SER)=" & rs(2) & ") " & _
           "AND ((HIMEDX_HIXT607.T607_ENTN_DAT) Between #" & Dvon & "# And #" & Dbis & "#) " & _
           "AND ((HIMEDX_HIXT607.T607_STORNO_KZ)='N') " & _
           "AND ((HIMEDX_HIXT607.T607_T616_ZUOR_VG) Is Null));"

    Set rs2 = db.OpenRecordset(sql2, dbOpenDynaset)
    'wenn im Zeitraum von 5 Jahren zuvor keine Spende dieses Spenders existiert, ist diese eine Erstpende
   
    If rs2.RecordCount = 0 Then
        sql = "UPDATE tbl_temp1 SET erst='J' WHERE t607_KONSERV =" & rs(0) & ";"
        DoCmd.RunSQL (sql)
    End If
    'Wenn eine existiert, wird geprüft, ob diese selbst eine Erstpende war, dann ist die aktuelle eine Zweitspende
    'Wenn mehrere existieren ist die Frage hinfällig
    If rs2.RecordCount = 1 Then
        Dvon = rs2(1) - 1826
        Dbis = rs2(1) - 1
        Dvon = Replace(Format(Dvon, "mm/dd/yyyy"), ".", "/", 1, 7)
        Dbis = Replace(Format(Dbis, "mm/dd/yyyy"), ".", "/", 1, 7)
        sql = "SELECT  DISTINCT HIMEDX_HIXT607.T607_KONS_NR, HIMEDX_HIXT607.T607_ENTN_DAT " & _
             "FROM HIMEDX_HIXT607 " & _
             "WHERE (((HIMEDX_HIXT607.T607_T002_KL_SER)=" & rs(2) & ") " & _
             "AND ((HIMEDX_HIXT607.T607_ENTN_DAT) Between #" & Dvon & "# And #" & Dbis & "#) AND ((HIMEDX_HIXT607.T607_STORNO_KZ)='N')) " & _
             "ORDER BY HIMEDX_HIXT607.T607_ENTN_DAT;"
        Set rs3 = db.OpenRecordset(sql, dbOpenDynaset)
        If rs3.RecordCount = 0 Then
            sql = "UPDATE tbl_temp1 SET zweit='J' WHERE t607_KONSERV =" & rs(0) & ";"
            DoCmd.RunSQL (sql)
        End If
        rs3.Close
    End If
    rs2.Close
    rs.MoveNext
Wend
rs.Close
 
hab rausgefunden, das die methode ".RecordCount" den Fehler bringt.
Wenn ich manuell zähle gehts
Code:
While Not rs2.EOF
      anzahl = anzahl + 1
      rs2.MoveNext
Wend
 
Zurück