VBA Access Laufzeitfehler 440 Automatisierungsfehler
Ich bin mir nicht sicher, was diesen Fehler verursacht und möchte einige helfen, zu verstehen, was Fehler, den ich machte, das Sie verursachte, als auch helfen, oder Vorschläge, wie das Problem zu beheben
Unten ist ein Abschnitt des Codes, dass ich immer die Fehler auf.
Die debug-flags bis auf Zeile 7 "Feb = (Me.BillRate * DayNum) * Me.Util_"
Set dayRs = db.OpenRecordset("SELECT WrkDays FROM WrkDays ORDER BY WrkMonth;")
dayRs.MoveFirst
Set DayNum = dayRs.Fields("WrkDays")
While Not dayRs.EOF
Jan = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Feb = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Mar = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Apr = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
May = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Jun = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Jul = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Aug = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Sep = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Oct = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Nov = (Me.BillRate * DayNum) * Me.Util_
dayRs.MoveNext
Dec = (Me.BillRate * DayNum) * Me.Util_
Wend
Ich nehme an, die basieren auf, wie ich gebaut dieser code, dass ich sehr wahrscheinlich eine ähnliche Fehlermeldung auf den code-Zeilen, die Folgen, nach dem "Jan" - Linie. Ich will also verstehen, diese Fehler mehr klar, so dass ich korrigieren kann Zukunft stellen.
UPDATE
Nach der Zusammenarbeit mit Hans zeigte er mir mit dem recordset.getrows-Methode erreicht, die den gleichen Prozess, den ich versuche zu tun, mit weniger Kopfschmerzen. Also, vielen Dank Hans
- Ich würde dringend bitten, Sie zu re-Namen
Me.Util_
. Die Verwendung des Unterstrichs ist sicher, um Probleme zu schaffen, darunter vielleicht die, die Sie zu tun haben. - Ich würde denken, die Linie
Set DayNum = dayRs.Fields("WrkDays")
gehen muss, INNERHALB derWhile
Schleife. - Leider ist die Mir.Util_ auf einem Feld basiert, habe ich keine Kontrolle auf umbenennen. Können Sie erklären, warum das Set DayNum = dayRs.Felder("WrkDays") - Zeile sollte innerhalb der Schleife?
- Da
dayRs.Fields("WrkDays")
vermutlich ändert sich mit jedem neuen Datensatz, so dass Sie haben, um es frisch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider, dass insbesondere die Fehlermeldung ist eher Dünn auf details.
Mein Erster Vorschlag ist, deaktivieren Sie diese Zeile ...
Dann überall dort, wo Sie verwenden
DayNum
im rest des Codes, die auf das Feld Wert direkt ein.Allerdings bin ich mir nicht sicher, der Vorschlag ist der fix. Wenn es nicht ist,
legen Sie einen Haltepunkt auf die
Feb =
Linie und untersuchen den status des recordset-Objekts die aktuelle Zeile und die Werte aller Einheiten ...In das Direktfenster ...
Hoffentlich, dass der Aufwand wird etwas verraten, das kann dazu führen, zu beheben.
SELECT WrkDays FROM WrkDays ORDER BY WrkMonth;
Vielleicht ist es nur eine Zeile zurückgibt?dayRs.EOF
nach nur einemMoveNext
aus dem ersten recordset-Zeile. Da bin ich überfragt, zumindest für jetzt. Sorry.Wenn Sie nur suchen für die Tage (oder Tage) pro Monat, die Sie tun können, besser mit VBA-Datums-Funktionen. Zum Beispiel, info hier.
Ihre Anforderungen werden immer komplexer-vielleicht die Tage für einen Monat durch den Benutzer angegeben ist. In diesem Fall müssen Sie fixieren Sie die Schleife.
While...Wend
ist die Förderung der cursor durch das recordset, und so istMoveNext
.Versuchen auskommentieren der
While
undWend
Linien. Macht den code ausführen die gleichen?WrkDays
haben 12 Datensätze? Wenn so, es scheint, Sie wollen, um zu bestimmen, Abrechnung pro Monat. Ich denke, es gibt wirklich einfachere Wege, dies zu behandeln. Ich Frage mich, welche Daten inUtil_
?WrkDays
haben 12 Datensätze?Diese arbeiten mit genau 12 Datensätze, oder, wichtiger noch, mehr oder weniger.
Nach einer Zeit können Sie feststellen, dass Sie mehr Datensätze.