Hallo Fans,
als GREENHORN frage ich: Ist es möglich in A97 eine Timer-Funktion zu bekommen? Ich meine, dass aufgrund der Angabe in einem Terminfeld z.B 19.03.00 17:12 eine Meldung ausgegeben wird. ???
Hallo Fans,
als GREENHORN frage ich: Ist es möglich in A97 eine Timer-Funktion zu bekommen? Ich meine, dass aufgrund der Angabe in einem Terminfeld z.B 19.03.00 17:12 eine Meldung ausgegeben wird. ???
Es gibt einen Formular-Timer (siehe in der Hilfe unter „BeiZeitgeber“ bzw. „Timer“). Wenn du ein Formular in deiner Applikation hast, das dauerhaft geladen ist (es kann ggf. auch unsichtbar sein), dann kannst du über dessen Timer derartige Auswertungen machen, Meldungen absetzen usw.
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Reinhard,
vielen Dank für Deinen Hinweis. An dieser Stelle auch einmal einen besonderen Dank an Dich, denn Deine vielen Antworten Hinweise und Tips sind einmalig.
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Wenn du ein Formular in deiner
Applikation hast, das dauerhaft geladen
ist
Hallo Martin,
das dürfte das Problem sein: die Anwendung muß dauerhaft geladen sein.
Wenn das nicht möglich oder nicht erwünscht ist, kannst Du über den at-Befehl (oder Systemdienst) Deine Anwendung zum betreffenden Zeitpunkt öffnen; im Autoexec-Makro könntest Du eine zusätzliche Überprüfung von Datum und Uhrzeit unterbringen, die dann Deine Aktionen startet.
Gruß
J.
Hallo Jose´,
ich bin ein Grennhorn und Dein Ratschlag ist für mich nicht ganz verständlich. Bisher habe ich ein Formular Z1 geschaffen „Bei Zeitgeber“ ist auf ein Makro eingestellt. Das Makro öffnet das Formular Z2. Das Makro ist bedingt mit einem Datum und einer Zeit. Das Formular Z2 soll geöffnet werden, wenn Datum und Uhrzeit beider Formulare übereinstimmen.Zeitgeberintervall ist auf 1.000 eingestellt. Höchstwahrscheinlich mache ich einen Denkfehler in der Anlage der Daten. Aber welchen??? Bis jetzt öffnet sich das Formular pausenlos… also jede Sekunde.
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Jose´,
ich bin ein Grennhorn und Dein Ratschlag
ist für mich nicht ganz verständlich.
Bisher habe ich ein Formular Z1
geschaffen „Bei Zeitgeber“ ist auf ein
Makro eingestellt. Das Makro öffnet das
Formular Z2. Das Makro ist bedingt mit
einem Datum und einer Zeit. Das Formular
Z2 soll geöffnet werden, wenn Datum und
Uhrzeit beider Formulare
übereinstimmen.Zeitgeberintervall ist auf
1.000 eingestellt. Höchstwahrscheinlich
mache ich einen Denkfehler in der Anlage
der Daten. Aber welchen??? Bis jetzt
öffnet sich das Formular pausenlos…
also jede Sekunde.Martin
Hallo Martin,
mit Makros kommst du hier nicht weiter!
Du öffnest dein Formular im AutoExec (oder definierst es als Startformular). Das Formular hat einen Timer (meinetwegen ein Zeitgeber-Intervall von 1000 - also der Timer feuert jede Sekunde.) Dann definierst du folgende Ereignisprozeduren:
Dim MeineZeit ' Formularweite Variable!
Private Sub Form\_Open(Cancel As Integer)
MeineZeit = DateAdd("s", 10, Now) ' das jetzt nur als Beispiel: in 10 s geht es los...
End Sub
Private Sub Form\_Timer()
If Not IsNull(MeineZeit) Then
If Now \> MeineZeit Then
MeineZeit = Null
MsgBox "Jetzt geht's los..."
End If
End If
End Sub
Wo du jetzt „MeineZeit“ herbekommst, ist natürlich deine Sache - die Vergleichszeit könnte z.B. in einem Formularfeld stehen…
Und der erfolgte Vergleich könnte auch anderswo vermerkt werden. Wichtig ist, auf „grösser“ zu vergleichen, denn der Timer feuert nicht exakt jede Sekunde (und auch bzw. gerade wenn man das Intervall kleiner stellt, ist das keineswegs sicher - wenn der Rechner beispielsweise stark belastet ist…)
Reinhard
Hallo Martin,
ich bin ein Grennhorn und Dein Ratschlag
ist für mich nicht ganz verständlich.
Worauf ich hinaus will, ist: Innerhalb von Access ist die Aufgabe relativ unkompliziert zu lösen (siehe Antwort von R. Kraasch unten). Die Timer schlagen aber nur zu, wenn die Access-Anwendung läuft, das heißt pausenlos. Das ist aber oft nicht erwünscht.
Al Lösung bietet sich an, den at-Befehl zu verwenden, z.B.:
at 22:00 /every:Mo,Di,Mi,Do,Fr,Sa,So D:\APPS\MSOFFICE\Office\MSACCESS.EXE MeineDB.MDB /C PruefeZeit
(Startet jeden Tag um 22:00 Uhr Access mit der Datei MeineDB.MDB und teilt ihr mit, daß Du die Zeit prüfen willst).
Den at-Befehl gibt es nur unter NT (evtl. auch unter Win98? Kenne ich nicht); unter Win95 gibt es den sog. Systemdienst, der das gleiche erledigt und mit einer grafischen Oberfläche aufwarten kann.
Das ist nur die halbe Arbeit. Die zweite Hälfte mußt Du in der MDB erledigen. Beim Starten mußt Du nämlich überprüfen, ob Deine Aktionen gestartet werden sollen:
Im Autoexec-Makro shreibst Du:
AusführenCode
Funktionsname:
PruefeZeit()
Die Funktion PruefeZeit sieht so aus, daß Du das Runcommand überprüfst; ist es genau gleich „PruefeZeit“, dann führst Du aus, was Du willst, und beendest Access; wenn nicht, dann ist es ein „normaler“ Start, und Du öffnest Dein Startformular.
Ich meinerseits würde die voreingestellte Zeit in eine Tabelle ablegen, um sie dann jeweils herauszuholen:
Public Function PruefeZeit()
Dim VoreingestellteZeit as Date
VoreingestellteZeit = DLookup(„Zeit“, „SetupTabelle“)
if Command() = „PruefeZeit“ then
if Now > VoreingestellteZeit then
Tue_was()
end if
Docmd.Quit
else
DoCmd.OpenForm „MeinStartFormular“
end if
In diesem Formular befinden sich dann die von Reinhard beschriebenen Dinge.
Ich hoffe, das war ausführlich genug (und nicht zu lang)
Gruß
J.