Avatar billede overchord Nybegynder
09. september 2004 - 15:44 Der er 22 kommentarer og
2 løsninger

Acc97: Form-opdatering inden modul koeres

Hejsa

Jeg har en lille popup form ved opstart af databasen som chekker for opdateringer i backend-tabeller. Hvis data er opdateret skal der overfores og beregnes data til en lokal tabel hvilket tager lidt tid hvor der kaldes et modul. Derfor ville det jo vaere rart at kunne opdatere en besked paa formen om status. Derfor smed jeg et label ind paa formen. Men koden eksekveres aabenbart saa hurtigt i starten at formen ikke vises foer disse gennemloeb er foretaget, hvilket tager 2-30 sekunder.
Koden ligger i Load-eventen for formularen og jeg har forsoegt mig med Me.Refresh/Me.Repaint efter at have opdateret Me.LblStatus.Caption, men der sker stadig ikke noget.
Nogle ideer? Skal koden flyttes fra onLoad eller er der en anden maade at sikre at teksten vises?
Avatar billede madschristensen Nybegynder
09. september 2004 - 15:48 #1
prøv med doevents()
Avatar billede overchord Nybegynder
09. september 2004 - 15:51 #2
ok lidt lost - doevents - er den tilladt i Access97?
Avatar billede madschristensen Nybegynder
09. september 2004 - 15:53 #3
Ja.

Prøv bare at indsætte sætningen i koden
Avatar billede overchord Nybegynder
09. september 2004 - 16:06 #4
ok den klager ikke naar man bruger DoEvents - uden parantes - men det goere heller ikke rigtigt noget - formen vises stadig ikke
Avatar billede madschristensen Nybegynder
09. september 2004 - 16:11 #5
Ok - doevent afgiver kontrollen til operativsystemet - til andre processer.
J.f. nedenstående skal du nok prøve Form_Activate()

When you first open a form, the following events occur in this order:
Open -> Load -> Resize -> Activate -> Current
Avatar billede overchord Nybegynder
09. september 2004 - 16:49 #6
ok nu vises formen ok naar der strtes op, men koden bliver ikke eksekveret under Activeate - hvad skal jeg smide i laod-eventen for at faa det sparket igang?
Avatar billede sjap Praktikant
09. september 2004 - 16:50 #7
Alternativt kan du jo prøve med hændelsen Timerudløb. Dvs. du sætter f.eks. Timer til 1000 og på hændelsen Timerudløb lægger du din kode.
Avatar billede overchord Nybegynder
09. september 2004 - 16:51 #8
har proevet med me.setfocus - men det hjaelper ikke
Avatar billede overchord Nybegynder
09. september 2004 - 17:00 #9
sjap - ideen med timer virker. Den naeste smaa-irriterende ting der sker er at jeg gennem modulet eksekverer en stak SQL kald. Det lader til at SQL-kaldene ikke bliver faerdige inden popuppen lukket og viser den naeste skaerm.

Mit kald er:

.....
For i = 1 To 3
If LocalD(i) < ServerD(i) Then
        TBName = "TblZoo" & i
        Me.LblStatus.Caption = "Updating Zooplankton part " & i
        Me.Refresh
        DoEvents
        PreParsing.RunUpdates (TBName)
End If
Next i
   
DoCmd.OpenForm "STA_splash"
   
DoCmd.Close acForm, "Loadscreen", acSaveNo
End Sub

Det lader ikke til at den venter paa at preparsing.Runupdates() er faerdig inden den maser videre i koden hvilket resulterer i at STA_splash vises mens den stadig er igang med at opdatere tabellerne. Er der en nem maade at faa den til at vente paa at runupdates er faerdig?
Avatar billede sjap Praktikant
09. september 2004 - 17:11 #10
PreParsing.RunUpdates (TBName)    Den er ny for mig, den har jeg ikke hørt om, så den kender jeg ikke.
Hvis det f.eks. var kald af almindelige forespørgsler, så ville den vente indtil forespørgslen var kørt inden den fortsætter afviklingen af koden.
Avatar billede overchord Nybegynder
09. september 2004 - 17:15 #11
ok PreParsing.RunUpdates er en sub i modulet Preparsing, som gennemkoeres for tre tabeller.
I denne sub gennemkoeres en tabel, og resultaterne overfoeres til to andre tabeller efter der er udfoert en raekke beregninger paa dem. Saa hvis jeg kalder RunUpdates(TBName) vil jeg koerer en lang raekke INSERT INTO kald baseret paa tabellen TBName til to andre tabeller (Dette goeres for at gore plotting hurtigere paa de beregnede felter naar brugeren har loadet).
Problemet er at det lader til at alle INSERT-kaldene i RunUpdates ikke er afsluttet for koden vist ovenover fortsaetter.
Avatar billede sjap Praktikant
09. september 2004 - 17:18 #12
Jeg plejer ikke selv bruge DoEvents. Er du sikker på den ikke "roder" rundt i tingene?
Avatar billede overchord Nybegynder
09. september 2004 - 17:21 #13
Hmm det ved jeg ikke - som dig plejer jeg ikke rigtigt at bruge DoEvents, men siden Me.Lblstatus.Caption ikke blev opdateret  uden proevede jeg at inkludere den hvilket virkede fint for at faa det sk*de label opdateret :-)
Men jeg ved ikke om det er den der laver ged i kaldene til min sub nu...
Avatar billede sjap Praktikant
09. september 2004 - 17:22 #14
Sæt en ' foran og se hvad der sker.
Avatar billede overchord Nybegynder
09. september 2004 - 17:23 #15
Hvis jeg fjerner DoEvents vises der ikke nogen aendringer i label - Men til gengaled korer den koden faerdig inden den henter den naeste form!!!
Saa nu er jeg rundt regnet lige vidt :-D
Avatar billede madschristensen Nybegynder
09. september 2004 - 17:24 #16
Det burde ikke være den. Tvært i mod faktisk.
Avatar billede madschristensen Nybegynder
09. september 2004 - 17:25 #17
Byt rundt på doEvents og PreParsing.
Avatar billede overchord Nybegynder
09. september 2004 - 17:29 #18
Jeps hvis jeg bytter rundt paa DoEvents og Preparsing faar jeg vist 2 ud af loopets 3 label-opdateringer :-)
Avatar billede overchord Nybegynder
09. september 2004 - 17:30 #19
Hvis i begge forresten lige husker at smide et svar paa et tidspunkt kan jeg faa givet jer nogle point for alt det mas :-)
Avatar billede sjap Praktikant
09. september 2004 - 17:35 #20
Pænt tak :0)
Avatar billede madschristensen Nybegynder
09. september 2004 - 17:35 #21
Jeps - takker ;O)
Avatar billede overchord Nybegynder
09. september 2004 - 17:37 #22
Jeg tror jeg er naaet til et stadie hvor jeg kan bytte lidt rundt paa tingene og faa en ok - loesning, men konklusionen er nu sjovt nok stadig at det lader til at introduktionen af DoEvents resulterer i at koden i PreParsing ikke bliver koert helt faerdigt inden der retuneres til Formens kode. Koden eksekveres dog stadigt korrekt.
Avatar billede madschristensen Nybegynder
09. september 2004 - 17:39 #23
Jeg har noget kode der sikrer synkrone shell kald - hvis det kunne anvendes? Men det tvivler jeg nu på kan anvendes i denne løsning.
Avatar billede overchord Nybegynder
10. september 2004 - 11:00 #24
Ja jeg tror ikke lige det bliver brugbart i denne sammenhaeng idet jeg jo egentligt ikke bruger Shell her - eller andre steder i opstarten - men tak for tilbuddet
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