Elite Veteran
Beiträge: 874
Ort: Wien | Hallo!
GenGomez - 15.03.16
...
Set rst_bk = db.OpenRecordset("Betriebskalender", dbOpenDynaset)
Set rst_daten = db.OpenRecordset("tbl_Eingabe", dbOpenDynaset)
rst_bk.MoveFirst
rst_daten.MoveFirst
Die beiden MoveFirst hier kannst du einsparen. Nach dem Öffnen stehen DAO-Recordsets immer auf dem ersten DS, wenn es ihn gibt.
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
Hier würde ich prüfen, ob ein DS gefunden wurde:
If rst_bk.NoMatch = False Then
bk_ende_zeit = rst_bk("Endezeit") 'EndeZeit des Starttages ermitteln
...
rst_bk.MoveNext 'Hier läuft er noch zum zweiten Datensatz - nicht zum Datensatz NACH FindFirst
...
Wenn das FindFirst sicher klappt, dann ist die Frage, wonach die Datensätze in der Domäne sortiert sind. Bei einer Tabelle ist das i.d.R. nach dem Primärschlüssel. Du solltest jedenfalls hier nicht direkt die Tabelle für das Recordset verwenden sondern eine Abfrage, die zuverlässig wie gewünscht sortiert, also ca.
Dim strSQL As String
strSQL = "SELECT IdOderDergl, Startzeit, Endezeit" & _
" FROM Betriebskalender" & _
" ORDER BY Startzeit"
Set rst_bk = db.OpenRecordset(strSQL, dbOpenDynaset)
Wenn das MoveNext damit klappt, ist noch die Frage, ob du für deine aktuelle Verarbeitung alle DS der Tabelle brauchst, weil du z.B. mehrere solche Startzeitpunkte anspringst. Falls nicht, kannst du auch noch das FindFirst einsparen, also gleich:
strSQL = "SELECT IdOderDergl, Startzeit, Endezeit" & _
" FROM Betriebskalender" & _
" WHERE Startzeit >= " & CLng(dlz_start_date) & _
" ORDER BY Startzeit"
----- Servus
Karl
*********
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek - Jetzt anmelden für 19./20.10. in Nürnberg
Access DevCon Vienna: https://www.donkarl.com/devcon
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy... |