thomas1972
Goto Top

Access ein Script alle X Minuten ausführen und bei Bedarf stoppen

Hallo ,
ich möchte über Access eine Zeitschleife einbauen, welche mir ein Script immer wieder ausführt ( alle 30 Minuten)

leider funktioniert dieses nicht, wie es u.a. in Excel greifen würde


Private Sub schleife_start_Click()
call übergeben_an_abfrage
    NextStartTime = Date + TimeSerial(Hour(Now) + 0, 20, 0)
    Application.OnTime EarliestTime:=NextStartTime, Procedure:="übergeben_an_abfrage", latestTime:=NextStartTime + TimeSerial(0, 10, 0)  
End Sub


Private Sub schleife_stopp_Click()
If NextStartTime > Now Then
        Application.OnTime EarliestTime:=NextStartTime, Procedure:="übergeben_an_abfrage", Schedule:=False  
        NextStartTime = 0
    End If

End Sub

wie kann ich in Access ein Script alle X Minuten ausführen und bei bedarf stoppen ?

Content-ID: 320429

Url: https://administrator.de/contentid/320429

Ausgedruckt am: 15.11.2024 um 05:11 Uhr

131381
131381 09.11.2016 aktualisiert um 16:36:52 Uhr
Goto Top
Dim stopProcessing As Boolean

Sub MyLoop()
    While Not stopProcessing
        msgbox "Doing some work here"  
        pause 1800
    Wend
End Sub

Private Sub btnStart_Click()
    stopProcessing = False
    MyLoop
End Sub

Private Sub btnStop_Click()
    stopProcessing = True
End Sub

Sub pause(t As Integer)
    start = Timer
    Do While Timer < start + t and not stopProcessing
        DoEvents
    Loop
End Sub
Gruß
thomas1972
thomas1972 09.11.2016 aktualisiert um 17:59:05 Uhr
Goto Top
Vielen dank für die Antwort,
leider greift es nicht ganz, eigentlich sollte er bei Pause X Sekunden ja erst nach Ablauf wiederholen, die z.b. msgbox wird im Sekundentakt vorgebendet und nicht nach 10 Sekunden nicht mehr

Es wird in der Schleife immer wieder den Start wert + T ( Pause) weiter hoch gezählt und findet somit kein Ende


Private Sub myloop()
Dim stopProcessing As Boolean

While Not stopProcessing
    msgbox "tu irgend etwas"  
    
    pause 10 '1800  
Wend
End Sub

Private Sub pause(t As Integer)
Dim stopProcessing As Boolean
Dim start
start = timer
Debug.Print "start:"; start, "timer:"; timer  
Do While timer > start + t And Not stopProcessing

DoEvents
Loop
End Sub
Private Sub schleife_start_Click()
Dim stopProcessing As Boolean
stopProcessing = False
myloop
End Sub

Private Sub schleife_stopp_Click()
Dim stopProcessing As Boolean
stopProcessing = True
End Sub


Ergebis
start: 64408,17 timer: 64412,05
start: 64412,05 timer: 64412,48
start: 64412,48 timer: 64412,65
start: 64412,65 timer: 64412,79
start: 64412,79 timer: 64412,92
start: 64412,92 timer: 64413,05
start: 64413,06 timer: 64413,18
start: 64413,18 timer: 64413,3
start: 64413,3 timer: 64413,45
start: 64413,45 timer: 64413,57
start: 64413,57 timer: 64413,69
start: 64413,69 timer: 64413,82
start: 64413,82 timer: 64414,2
start: 64414,2 timer: 64414,34
start: 64414,34 timer: 64414,47
start: 64414,47 timer: 64414,62
start: 64414,62 timer: 64417,61
131381
131381 09.11.2016 aktualisiert um 18:01:56 Uhr
Goto Top
Du hast es ja auch falsch übernommen! Schau dir das Skript oben nochmal ganze genau an, besonders die erste Variable die Global außerhalb der Subs deklariert ist!

Nicht nur kopieren sondern erst "verstehen" und dann umsetzen.
thomas1972
thomas1972 10.11.2016 aktualisiert um 08:26:26 Uhr
Goto Top
Guten Morgen,

habe ich übernommen,

Dim stopProcessing As Boolean

Private Sub myloop()

While Not stopProcessing
    Call übergeben_an_abfrage
    
    pause 1500 '1800  
   Wend
End Sub

Sub pause(t As Integer)

    start = timer
    Do While timer > start + t And Not stopProcessing
    DoEvents
    Loop
End Sub

Private Sub schleife_start_Click()
    stopProcessing = False
    myloop
End Sub

Private Sub schleife_stopp_Click()
    stopProcessing = True
End Sub

bekomme aber beim ausführen (..startclick() ) wie gestern den Fehler das eine variable nicht definiert ist -> stopProcessing
daher habe ich es abgewandelt habt.
131381
131381 10.11.2016 aktualisiert um 09:20:28 Uhr
Goto Top
Dann liegt das ganze nicht in einem Modul ...oder du hast die globale Variable an die falsche Stelle gepackt oder in einem Klassenmodul nicht als Public deklariert. Simple Anfängerfehler.