Herbers Excel-Forum - das Archiv

Warteschleife in ACCESS

Bild

Betrifft: Warteschleife in ACCESS
von: Uwe (:o)

Geschrieben am: 04.01.2007 20:48:26
Hallo Forum,
(hoffe der viele Text schreckt Euch nicht ab (:-)),
ich weiß das hier ist eigentlich ein Excel-Forum, aber ich fühl mich hier "zu Hause" und hoffe das mir auch mit meinem Access-Problem hier geholfen wird.
Oder vielleich bekomm ich auch einen Tip für ein gutes Access-Forum (so toll wie dieses Forum kann es natürlich nicht sein!). Also mein Problem:
Ich komm mit VBA in Excel ganz gut klar, muss aber jetzt eine Access-Datenbank erstellen. Auf einem Rechner in unserem Netzwerk soll auschließlich ein Formular dieser Datenbank immer angezeigt werden. In diesem Formular wird berechnet wieviel Zeit noch zur Bearbeitung eines Wareneingangs bleibt. Das muss jede Minute neu berechnet werden und evtl. auch neu sortiert. Da in VBA für Access Application.Calculate nicht geht und ich auch nichts ähnliches gefunden habe, habe ich ein Programm geschrieben, das das Formular alle 60 Sek, schließt und neu öffnet:
Option Compare Database
Option Explicit
Declare
Sub Sleep Lib "Kernel32.dll" (ByVal Schlafzeit As Long)
Sub PlasmaFormÖffnen()
Dim L As Long
Dim M As Long
DoCmd.OpenForm "frmAnzeigRestzeitLEER2"
Do
DoCmd.OpenForm "frmAnzeigRestzeit"
'For L = 1 To 10000
'    For M = 1 To 20000
'    Next M
'Next L
DoEvents
Sleep 60000
DoCmd.Close acForm, "frmAnzeigRestzeit", acSaveNo
DoEvents
Loop
End Sub

Das funktioniert auch so, ABER... : In dem Formular sind alle Felder mit einer bedingten Formatierung formatiert. Diese Formatierung wird nur ab und zu mal nach dem Öffnen angezeigt, meisten nicht. Wenn das Programm direkt auf dem PC läuft klappt es, im Netzwerk aber nur ab und zu. Ich denke der Sleep-Befehl (diese API Funktion habe ich hier aus dem Forum, nochmal Danke!) läßt dem Öffnen nicht genug Zeit für die Berechnung des Formats. Ich habe schon versucht mit einer leeren Zählschleife (s.o. Auskommentiert) und DoEvents an verschiedenen Stellen was auszurichten, aber es haut nicht hin.
Hat jemand einen Tip was ich da manchen kann. Gibt es in ACCESS (bin da nicht soooo fit) vielleicht eine andere Möglichkeit das Formular jede Minute neu zu berechnen? Oder wie kann ich dem Öffnen-Befehl "genug Zeit verschaffen".
Vielleicht habt ihr auch einen Tip, wie ich die Schleife ohne ESC anhalten kann? (Da knibbel ich noch dran, evtl mit einer Variablen, die umgestellt wird und dann: IF Variable = 1 then exit sub... oder so)
Ich freue mich auf jeden Fall über jeden Tip und werde auch bestimmt (allerdings wohl erst morgen) antworten.
Gruß
Uwe
(:o)
Bild

Betrifft: AW: Warteschleife in ACCESS (mit Zeilenumbruch)
von: Uwe (:o)

Geschrieben am: 04.01.2007 20:55:21
Hi,
uuuppps, irgendwie fehlt der Zeilenumbruch, habe es mal manuele versucht.
Also nochmal der gleiche Text:
Hallo Forum,
(hoffe der viele Text schreckt Euch nicht ab (:-)),
ich weiß das hier ist eigentlich ein Excel-Forum,
aber ich fühl mich hier "zu Hause" und hoffe das mir auch
mit meinem Access-Problem hier geholfen wird.
Oder vielleich bekomm ich auch einen Tip für ein gutes Access-Forum
(so toll wie dieses Forum kann es natürlich nicht sein!).
Also mein Problem:
Ich komm mit VBA in Excel ganz gut klar, muss aber jetzt eine Access-Datenbank
erstellen. Auf einem Rechner in unserem Netzwerk soll auschließlich ein Formular
dieser Datenbank immer angezeigt werden.
In diesem Formular wird berechnet wieviel Zeit noch zur Bearbeitung eines
Wareneingangs bleibt. Das muss jede Minute neu berechnet werden
und evtl. auch neu sortiert.
Da in VBA für Access Application.Calculate nicht geht und
ich auch nichts ähnliches gefunden habe, habe ich ein Programm geschrieben,
das das Formular alle 60 Sek, schließt und neu öffnet:
Option Compare Database
Option Explicit
Declare
Sub Sleep Lib "Kernel32.dll" (ByVal Schlafzeit As Long)
Sub PlasmaFormÖffnen()
Dim L As Long
Dim M As Long
DoCmd.OpenForm "frmAnzeigRestzeitLEER2"
Do
DoCmd.OpenForm "frmAnzeigRestzeit"
'For L = 1 To 10000
'    For M = 1 To 20000
'    Next M
'Next L
DoEvents
Sleep 60000
DoCmd.Close acForm, "frmAnzeigRestzeit", acSaveNo
DoEvents
Loop
End Sub

Das funktioniert auch so, ABER... :
In dem Formular sind alle Felder mit einer bedingten Formatierung formatiert.
Diese Formatierung wird nur ab und zu mal nach dem Öffnen angezeigt, meisten nicht.
Wenn das Programm direkt auf dem PC läuft klappt es, im Netzwerk aber nur ab und zu.
Ich denke der Sleep-Befehl (diese API Funktion habe ich hier aus dem Forum,
nochmal Danke!) läßt dem Öffnen nicht genug Zeit für die Berechnung des Formats.
Ich habe schon versucht mit einer leeren Zählschleife (s.o. Auskommentiert) und
DoEvents an verschiedenen Stellen was auszurichten, aber es haut nicht hin.
Hat jemand einen Tip was ich da manchen kann.
Gibt es in ACCESS (bin da nicht soooo fit) vielleicht eine andere Möglichkeit
das Formular jede Minute neu zu berechnen?
Oder wie kann ich dem Öffnen-Befehl "genug Zeit verschaffen".
Vielleicht habt ihr auch einen Tip, wie ich die Schleife ohne ESC anhalten kann?
(Da knibbel ich noch dran, evtl mit einer Variablen, die umgestellt wird und dann:
IF Variable = 1 then exit sub... oder so)
Ich freue mich auf jeden Fall über jeden Tip und werde auch bestimmt
(allerdings wohl erst morgen) antworten.
Gruß
Uwe
(:o)
Bild

Betrifft: AW: Warteschleife in ACCESS
von: Peter Feustel
Geschrieben am: 04.01.2007 21:06:47
Hallo Uwe,
im Access Forum von www.spotlight.de gibt es doch sehr pfiffige Helfer.
Hast du es da schon einmal versucht Hilfe zu bekommen?
Viele Grüße Peter
Bild

Betrifft: AW: Warteschleife in ACCESS
von: Peter Feustel

Geschrieben am: 04.01.2007 21:25:35
Hallo Uwe,
vielleicht hilft dir das weiter:
Sub delay(zeit!)
Dim zeitl  As Variant
zeitl = Timer
Do
DoEvents
Loop Until (timer - zeitl > zeit
End Sub

So kann anderen Anwendungen ermöglicht werden, ihre 'Tätigkeit' fortzusetzen.
Wieviel Zeit du dem Makro zuteilst, solltest du ausprobieren.
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Bild

Betrifft: AW: Warteschleife in ACCESS
von: Uwe (:o)

Geschrieben am: 05.01.2007 20:08:33
Hi Peter,
der Tip mit dem Timer hilft mir auf jeden Fall weiter. Ich hatte es über application.ontime versucht, aber das kennt er in ACCESS nicht. Ich konnte es heute noch nicht ausgiebig testen, weil das Programm schon läuft (und bei uns heute mal wieder Chaos herrschte..(;-)), aber mit der Timer-Schleife scheint es auf jeden Fall besser zu klappen. Ich werde noch versuchen ganz auf die Sleep-Funktion zu verzichten und nur mit dem Timer zu arbeiten. Aber jetzt ist erstmal Wochenende... . Evtl werde ich auch nochmal in spotlight nachfragen ob es in Access eine eigene Wartefunktion gibt.
Ich bedanke mich auf jeden Fall vielmals für Deine Hilfe.
Gruß
Uwe
(:o)
 Bild
Excel-Beispiele zum Thema "Warteschleife in ACCESS "
Access-Datenbank öffnen und deren Makro starten