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-Key: 320429

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

Printed on: April 26, 2024 at 12:04 o'clock

Mitglied: 131381
131381 Nov 09, 2016 updated at 15:36:52 (UTC)
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ß
Member: thomas1972
thomas1972 Nov 09, 2016 updated at 16:59:05 (UTC)
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
Mitglied: 131381
131381 Nov 09, 2016 updated at 17:01:56 (UTC)
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.
Member: thomas1972
thomas1972 Nov 10, 2016 updated at 07:26:26 (UTC)
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.
Mitglied: 131381
131381 Nov 10, 2016 updated at 08:20:28 (UTC)
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.