Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Laufzeitfehler 9 im Zusammenhang mit Array

Begonnen von tragger, April 14, 2013, 22:40:00

⏪ vorheriges - nächstes ⏩

tragger

Hallo Leute,
ich bin heute mal wieder am verzweifeln. ich bekomme immer einen Laufzeitfehler. Ich schiene mal wieder den Wlad vor lauter Bäumen nicht zu finden. Laufzeitfehler 9 : Indes außerhalb des gültigen Bereichs.

Ich weiß nicht warum, denn an anderer Stelle kein Problem beim befüllen des Arrays mit einer for-Schleife...

Hier der Code:


Dim db As Database
   Set db = CurrentDb
   Dim rs As DAO.Recordset
   Dim rs2 As DAO.Recordset
   Dim SQL$
   Dim SQL2$
   Dim Customer As Long
   Dim merker9 As Long
   Dim number As Double
   Dim I As Long, x As Long
[...]
SQL = " SELECT * FROM qryHaus"
               SQL = SQL + " WHERE MitgliedsNr =" & Customer & ""
               Set rs = db.OpenRecordset(SQL)
               Do Until rs.EOF
                   rs.Edit
   ' hier alte Werte!
' hier fehlt z.Zt. noch Code
                   I = 0
                   rs!Austritt = Date
                   rs!Mitgliedsstatus = "Ausgetreten"
                   rs.Update
                   ' Änderunngshistory füllen
                   ReDim Preserve myArrayName(I)
                   ReDim Preserve myArrayExit(I)
                   myArrayName(I) = "Austritt"
                   myArrayExit(I) = Date
                   I = I + 1
                   myArrayName(I) = Mitgliedsstatus
                   myArrayExit(I) = "Ausgetreten"
                   Customer = Me.MitgliedsNr
                   Referenzfield = "MitgliedsNr"
                   Referenznumber = Me.MitgliedsNr
                   Call AuditTrail(I, 1, "tabMitglieder", 10)
                   rs.MoveNext
               Loop
               rs.Close
[...]


Nur zur Info, es handelt sich hier um einen Codeauszug, der den Fehler verursacht..., außerdem verursacht AuditTrail sonst auch keine Probleme...

Ich danke schon vorab für eure Unterstützung...

daolix

wenn du
I = I + 1
musst du um in das/die Array(s) zu schreiben, diese auch neu Redimensionieren sprich
ReDim Preserve myArrayName(I)
ReDim Preserve myArrayExit(I)
myArrayName(I) = Mitgliedsstatus
myArrayExit(I) = "Ausgetreten"

tragger

mir bleibt der inhalt von I = 0 aber erhalten, oder??

daolix

ja.

dim EinArray() as Eindatentyp

es gibt 2 Arten ein Array zu redim'men
redim EinArray(neZahl)
das Array wird neu gesetz, vorhandene Daten werden gelöscht

redim preserve EinArray(neZahl)
das Array wird redimensoniert, vorhandene Daten bleiben erhalten