Toon posts:

[ACCESS] Refreshen form tussen uitvoeren functions

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een form waarin achter elkaar een aantal functies uitgevoerd worden, na het uitvoeren van iedere functie moet een vakje aangevinkt worden om aan ta geven dat deze functie geslaagd is.

Dit aanvinken gebeurd pas als na een aantal procedures, ik denk als de processor tijd over heeft of zo :?

Ik weet dat er een manier moet zijn, maar ik heb het volgende al geprobeerd:

- refreshdatabasewindow
- DoCmd.RunCommand accmdRefresh (&refreshpage)
- Start timer, on timer resume next etc.
- me.visible = false, me.visible = true

maar niet het juiste, wie weet dit wel?

ps Google en de search heb ik al geprobeerd! O-)

Verwijderd

DoEvents is misschien het sleutelwoord

  • Heras
  • Registratie: December 2001
  • Laatst online: 20-04 13:23
Ik snap je vraag niet helemaal... als ik een zooitje vinkjes op het scherm zet, en vervolgens onder een knop een aantal functies zet, en tussen de functies door de actie meegeef;

me.vink1 = true enz.

dan wordt er meteen een vinkje op het scherm gezet.

Verwijderd

Heras schreef op 07 november 2002 @ 10:26:
Ik snap je vraag niet helemaal... als ik een zooitje vinkjes op het scherm zet, en vervolgens onder een knop een aantal functies zet, en tussen de functies door de actie meegeef;

me.vink1 = true enz.

dan wordt er meteen een vinkje op het scherm gezet.
Als je een zwaar stuk code uitvoert kan dit wel eens niet direct gebeuren. Zoals al aangegeven is DoEvents dan de oplossing.

Verwijderd

Topicstarter
Verwijderd schreef op 07 November 2002 @ 10:12:
DoEvents is misschien het sleutelwoord
Wat een vage omschrijving van DoEvents in de help.

Waty ik eruit opmaak is dat je een counter laat lopen om tijd te rekken, en dan de DoEvnets kan uitvoeren omdat het processorgebruik laag is ofzo???

heb het geprobeerd, maar ik kan het niet in de VB-procedure toepassen, veel te omslachtig.

Kan je hem ook simpeler toepassen?

Verwijderd

Topicstarter
In de help vindt ik wel het volgende: :)
DoEvents is most useful for simple things like allowing a user to cancel a process after it has started, for example a search for a file. For long-running processes, yielding the processor is better accomplished by using a Timer or delegating the task to an ActiveX EXE component..
mee eens?

Verwijderd

Je OS deelt time-slices uit aan de processen. Jouw proggie is een proces (en een thread, maar dat doet niet terzake :) ). Het refreshen van een scherm/form is ook een proces die niet wordt afgehandeld door jouw proggie maar door je OS zelf. Wanneer je nu DoEvents aanroept krijgen alle andere processen even de mogelijkheid de taken uit te voeren, als ze daar behoefte aan hebben althans. De schermafhandeling (simpel gezegd) heeft daar behoefte aan en zal dus het scherm verversen. Dit zelfde geldt voor toetsafhandeling e.d. en dat is waar de help op doelt. Je geeft de gebruiker dan de mogelijkheid om een loop af te breken, omdat de toetsindrukken verwerkt kunnen worden.

Nadeel van DoEvents is wel dat je performance van je functie zal dalen. Stel je moet een stapel gegevens doorracen en je wilt een tellertje bijhouden, dan zal je zien dat het een stuk trager zal gaan met DoEvents dan wanneer je het doet zonder. Dit geldt natuurlijk alleen voor de wet van de grote getallen, voor kleine aantallen heb je natuurlijk ook weer geen tellertje nodig :9

Zeg het maar als het niet duidelijk is dan zal ik het anders proberen uit te leggen...
Pagina: 1