Seite 1 von 1

Makro bei Nichtaktivität starten???

Verfasst: So, 29.05.2011 00:06
von arkadiuszpaluszek
Hallo alle miteinander!

Habe ein auf den ersten Blick unlösbares Problem, aber vielleicht hat doch einer von Euch eine Idee???? :-)

Ich möchte, dass ein Makro startet wenn ich ca 30 Sek. nichts mehr in ein Formular eingetragen habe. Dieses Makro erhält dann nämlich die Verbindung zu meiner Web-DB aufrecht, während ich mir einen Kaffee koche, sonst hätte ich zwar einen Kaffee, aber beim Versuch weiterzuarbeiten bekomme ich die Meldung "MySQL Server has gone away" :)

Nun läuft das Makro bei mir im Hintergrund die ganze Zeit - was nicht ideal ist, weil es eben gut Ressourcen verbraucht. Allerdings kann ich bei Ereignissen so etwas wie "Dokument öffnen" oder "laden" oder was auch immer auswählen, dummerweise aber nicht "Programmierer kocht Kaffe und hat seit 30 Sek. nichts mehr gemacht". :)

Hat jemand von Euch irgendeinen Ansatz, irgendeine Idee??? Danke im Voraus!

Viele Grüße

Arek

Re: Makro bei Nichtaktivität starten???

Verfasst: So, 29.05.2011 12:10
von F3K Total
Hallo Arek,
vielleicht kannst Du auf dein Formular unter "nach der Datensatzaktion" ein Makro legen, das 30s nichts tut (wait 30000) und danach ein weiteres Makro aufruft, das alle 30 s deine gewünschte Aktion ausführt (Do while loop).

Gruß R

Re: Makro bei Nichtaktivität starten???

Verfasst: So, 29.05.2011 12:43
von Stephan
Nun läuft das Makro bei mir im Hintergrund die ganze Zeit - was nicht ideal ist, weil es eben gut Ressourcen verbraucht.
Dann wäre es interessant zu wissen was das Makro tut und was zu diesem 'guten' (also hohen?) Rsssourcenverbrauch führt, denn ein normales 'Warte'-Makro dürfte das wohl kaum verursachen.
Hat jemand von Euch irgendeinen Ansatz, irgendeine Idee???
Normalerweise würde ich eine Do-Loop-Schleife mit Afrage einer Variable verwenden, definiere eine Variable, setze den Wert dieser Variable am Ende jeder durchgeführten Aktion:

Code: Alles auswählen

ZeitletzteAktion = TIMER()
(Wie Du das Setzen auslöst kommt auf die Gegebenheiten an.)

Frage permanennt den Variablenwert ab und starte ggf. Dein Makro, z.B.:

Code: Alles auswählen

Global ZeitletzteAktion
Global MakroStarten

'...
Do
  Do
    x = TIMER()-ZeitletzteAktion
    If x >=30 Then
      MakroStarten = 1
    End If
    Wait 100  
  Loop While MakroStarten <> 1
  DeinMakro()
  MakroStarten = 0
Loop
'...
wobei Du praktisch wohl noch etwas überlegen solltest um am Ende das äußere Do-Loopp zu verlassen, z.B. wieder durch abfrage einer Variable die bei Schliessen des Dokumnts auf einen spezifischen Wert gesetzt wird.


Am Rande:
Warum eigentlich müllst Du Deinen Betrag mit 3 völlig überflüssigen Smileys zu, die lediglich das Lesen erschweren weil sie vom Inhalt ablenken? Warum 3- und 4-fache Fragezeichen?



Gruß
Stephan

Re: Makro bei Nichtaktivität starten???

Verfasst: So, 29.05.2011 21:08
von F3K Total
Hallo zusammen,
habe den Vorschlag von Stefan ausprobiert.
Funktioniert hervorragend.
Eine Zeile habe ich noch zugefügt, sonst rasselt "DeinMakro()" alle 100ms:
Do
Do
x = TIMER()-ZeitletzteAktion
If x >=30 Then
MakroStarten = 1
End If
Wait 100
Loop While MakroStarten <> 1
DeinMakro()
ZeitletzteAktion = TIMER()
MakroStarten = 0
Loop
Gruß R

Re: Makro bei Nichtaktivität starten???

Verfasst: So, 29.05.2011 21:22
von Stephan
Eine Zeile habe ich noch zugefügt, sonst rasselt "DeinMakro()" alle 100ms
Danke für die Korrektur.

Da ich Deine Ergänzung durchdacht habe, fällt mir jetzt noch ein Hinweis ein:
TIMER() fängt immer um Mitternacht wieder bei Null an, was dazu führt das es Probleme bei dem Makro geben kann wenn innerhalb des Zeitraumes indem es läuft Mitternacht liegt, es sollte reichen die Zeile:

Code: Alles auswählen

x = TIMER()-ZeitletzteAktion
zu ändern in:

Code: Alles auswählen

x = ABS(TIMER()-ZeitletzteAktion)


Gruß
Stephan