| |
New user
Beiträge: 3
| Hallo,
ich habe ein Problem mit Movenext im VBA Code.
Meine Aufgabe ist es, die Durchaufzeit eines Auftrages anhand seiner Start- und Endezeit unter Berücksichtigung der tatsächlichen Arbeitsfzeit (also ohne Arbeitsfreie Nächte und Wochenenden) zu ermitteln.
Dafür habe ich neben der Tabelle mit den Aufträgen eine zweite Tabelle mit dem sog. Betriebskalender (BK) angelegt. Dieser enthält die tatsächliche Arbeitszeit am jeweiligen Datum.
Mein Code soll jetzt anhand des Startdatum zunächst den passenden Tag im BK finden und die Stunden des ersten Tages berechnen. (Bis hier klappt es fehlerfrei).
Dann will ich den Datensatzzeiger im Recordset des BK auf den nächsten Datensatz (=nächster Tag) bewegen um die Berechnung in einer Schleife bis zum Endetag des Auftrages zu wiederholen.
In meinem Codebeispiel geht der Datensatzzeiger nach Movenext aber nicht zum Datensatz nach dem Starttag im BK sondern immer zum zweiten DS in der Tabelle bk.
Finde den Grund dafür nicht. Jemand eine Idee?
Sub dlz_berechnen()
' **************************************
' Berechnen der DLZ mit Betriebskalender
' **************************************
Set db = CurrentDb()
Set rst_bk = db.OpenRecordset("Betriebskalender", dbOpenDynaset)
Set rst_daten = db.OpenRecordset("tbl_Eingabe", dbOpenDynaset)
rst_bk.MoveFirst
rst_daten.MoveFirst
(Hier fehlt der Code für DLZ <= 1 Tag)
' ************************************************
' DLZ > 1 Tag
' ************************************************
' Startdatum im BK finden (dlz_start_date = bk_date)
kriterium = "Startzeit = " & CLng(dlz_start_date) 'datum aus PzM Start ; CLng -> Sonst Fehlermeldung; SQL Anweisung zusammenbauen
rst_bk.FindFirst kriterium 'Erster DS mit gleichem Datum finden
bk_ende_zeit = rst_bk("Endezeit") 'EndeZeit des Starttages ermitteln
dlz_summe = dlz_summe + (bk_ende_zeit - dlz_start_time) 'Zeitdiff zur DLZ addieren
' *************************************************************
' nächster Tag BK auswerten und addieren (ganz oder teilweise)
' *************************************************************
rst_bk.MoveNext 'Hier läuft er noch zum zweiten Datensatz - nicht zum Datensatz NACH FindFirst
bk_ende_zeit = rst_bk("Endezeit")
bk_start_zeit = rst_bk("Startzeit")
bk_datum = rst_bk("Betriebsdatum")
If dlz_ende_date > bk_datum Then
dlz_summe = dlz_summe + (bk_ende_zeit - bk_start_zeit)
End If
If dlz_ende_date = bk_datum Then
dlz_summe = dlz_summe + (dlz_ende_time - bk_start_zeit)
End If
End Sub
| |
|