Avatar billede jind Nybegynder
08. december 2006 - 12:57 Der er 5 kommentarer og
1 løsning

Opdaterer ikke form ordenligt før den videre beregning

Jeg har noget kode som skal hente data fra fire backends.
Jeg vil gerne have at brugeren får en besked - dvs en form - som fortæller at der går lidt tid.
Denne lukkes så - før den næste form med resultaterne vises.

Mit problem er, at den første form ikke bliver vist ordentligt da CPU'en har travlt med at hente data.
Hvordan sættes en pause ind -
så formen bliver ordentligt vist før dataene hentes?
Avatar billede jesperfjoelner Nybegynder
08. december 2006 - 13:44 #1
du kan prøve med:

DoEvents

det sted i koden, hvor du vil frigive processoren fra "hente-processen" til korrekt at vise din advarselsformular.
Avatar billede jind Nybegynder
08. december 2006 - 14:46 #2
Hvor præcis skal jeg skrive det?
Min kode ser således ud:

Private Sub Kommandoknap12_Click()

    Dim stDocName As String
    Dim stLinkCriteria As String
DoCmd.Close
DoEvents
    stDocName = "vent venligst"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Echo 1000, "Henter data...."
 
HentData
    DoCmd.Close
    stDocName = "Autoexec_efter"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

End Sub
Avatar billede jesperfjoelner Nybegynder
08. december 2006 - 15:34 #3
Er det ved linjen:

HentData

at det kører langsomt? fordi det tager tid at indhente dataene fra de 4 backends?
Er det en funktion, der henter dataene?

Det kan være du har brug for en progress bar som viser at noget er i gang?
Avatar billede jind Nybegynder
08. december 2006 - 15:59 #4
Ja, den når ikke at vise "vent venligst" formen før den går igang med at køre "hent data"
Jeg kunne godt tænke mig at vide hvordan man laver en progress bar også - men jeg skal vise den form med vent venligst i denne sag.
Avatar billede jesperfjoelner Nybegynder
08. december 2006 - 16:24 #5
Jeg kan ikke forstå at din formular "vent venligst" ikke vises som den skal.
Jeg har lavet et forsøg med en lignende opsætning her, og det virker tilsyneladende.

Kunne

Me.repaint

virke (den opfrisker skærmen)

eller evt. DoEvents lige før HentData:

Private Sub Kommandoknap12_Click()

    Dim stDocName As String
    Dim stLinkCriteria As String
DoCmd.Close
    stDocName = "vent venligst"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Echo 1000, "Henter data...."
DoEvents
HentData
    DoCmd.Close
    stDocName = "Autoexec_efter"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

End Sub
Avatar billede jind Nybegynder
11. december 2006 - 07:19 #6
DoEvents skulle bare ind det rigtige sted - så virkede det.
Tak.

me.repaint virkede ikke, da den form som VBA kører fra lukkes før "vent venligst" formen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester