Avatar billede jobless Nybegynder
30. november 2004 - 13:07 Der er 5 kommentarer og
1 løsning

Visuel opdatering stopper

Hej.

I flere sammenhænge har jeg noget VBA-Kode som gennemløber nogle poster m.m.

For at brugeren ikke skal tro at programmet er gået i stå, har jeg derfor lavet en opdatering af nogle felter, så man kan se at der sker noget.

Efter opdateringen af mine felter (mens VBA-koden kører), bruger jeg me.repaint.

Dette virker fint nogle gange, men andre gange stopper programmet med at svare (der er ingen visuel opdatering at se), selvom VBA-koden fortsat kører, og databasen ellers opfører sig korrekt efter endt kørsel.

Hvordan laver jeg en visuel opdatering af et felt, som fungerer igennem hele min kørsel ?

MVH

JoBless
Avatar billede terry Ekspert
30. november 2004 - 14:22 #1
you could try a me.requery
Avatar billede mugs Novice
30. november 2004 - 16:35 #2
Du kan f.eks skifte markør før koden starter og igen efter endt eksekverering. Indsæt dette i et modul:

'Nedenfor en liste med forskellige markørtyper.
Public Const IDC_APPSTARTING = 32650&
Public Const IDC_HAND = 32649&
Public Const IDC_ARROW = 32512&
Public Const IDC_CROSS = 32515&
Public Const IDC_IBEAM = 32513&
Public Const IDC_ICON = 32641&
Public Const IDC_NO = 32648&
Public Const IDC_SIZE = 32640&
Public Const IDC_SIZEALL = 32646&
Public Const IDC_SIZENESW = 32643&
Public Const IDC_SIZENS = 32645&
Public Const IDC_SIZENWSE = 32642&
Public Const IDC_SIZEWE = 32644&
Public Const IDC_UPARROW = 32516&
Public Const IDC_WAIT = 32514&
'Selve koden
Declare Function LoadCursorBynum Lib "user32" Alias "LoadCursorA" _
(ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Function MouseCursor(CursorType As Long)
  Dim lngRet As Long
  lngRet = LoadCursorBynum(0&, CursorType)
  lngRet = SetCursor(lngRet)
End Function
Function PointM(strPathToCursor As String)
  Dim lngRet As Long
  lngRet = LoadCursorFromFile(strPathToCursor)
  lngRet = SetCursor(lngRet)
End Function

Og i formularen:
MouseCursor IDC_APPSTARTING
Din kode
MouseCursor IDC_HAND
Avatar billede fdata Forsker
30. november 2004 - 18:19 #3
Har samme problem med Access' indbyggede "timeglas" SysCmd(acSysCmdSetStatus ...
Den tæller nogle få sekunder og stopper så (men koden bagved kører videre)
... og her hjælper Requery og Repaint osv. jo ikke.
(Problemet er tilsyneladende opstået sammen med indførelsen af Win XP)
Avatar billede jobless Nybegynder
01. december 2004 - 08:11 #4
Terry: me.requery er ikke helt ideelt, da jeg har nogle felter med dcount, som trækker tænder ud. Hvis disse skal reberegnes ved hvert gennemløb af en løkke, vil det tage ekstra lang tid at køre løkken igennem.

Mugs: Jeg har tilføjet MouseCursor IDC_APPSTARTING i starten af løkken, og MouseCursor IDC_HAND lige inden loop. Nu sker der ingen visuel opdatering overhovedet, udover at markøren skifter.
Avatar billede mugs Novice
01. december 2004 - 12:36 #5
hmmm ?
Avatar billede jobless Nybegynder
18. januar 2005 - 14:17 #6
Måske er det bare access der ikke kan håndtere de mange hurtige opdateringer.....
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