30. november 2004 - 13:07Der 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 ?
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
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
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)
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.
Måske er det bare access der ikke kan håndtere de mange hurtige opdateringer.....
Synes godt om
Ny brugerNybegynder
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.