Avatar billede sigyn Seniormester
07. september 2010 - 10:49 Der er 7 kommentarer og
1 løsning

3 x events

Jeg har en formular, hvor jeg har et par ting der driller mig.

1) Jeg har et felt, hvor jeg gerne vil køre en makro, når jeg har tastet i feltet og forlader det. Jeg har sat en DoCmd.RunMacro på feltets AfterUpdate, og har konstateret, at det ikke er løsningen. Macroen kører, men først når jeg afslutter den næste post, altså ikke engang, når jeg aflutter posten, som den er i ?
Så hvilken event skal jeg have fat i her, og hvor ?

2) I samme formular har jeg tilføjet en knap i posten, den åbner en ny formular, så langt så godt, problemet er at tabellen til den første formular ikke er opdateret, det bliver den jo først når jeg skifter post. Kan jeg fremtvinge det, så det sker når man trykker på knappen?

3)Nedenstående kode er hugget fra nedenstående spørgsmål. Jeg skal bare lige have det skåret ud i pap. Kan jeg kopiere koden direkte, og så navigere rundt i min formular, som om den var i dataarkvisning, det ville nemlig være dejligt :-) Det er de der Case 38 og Case 40 der forvirrer mig

http://www.eksperten.dk/spm/508050

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case 38
            docmd.GoToRecord,,acprevious
        Case 40
            docmd.GoToRecord,,acNext
    End Select
End Sub

Jeg arbejder i Access2000
Avatar billede neoman Novice
07. september 2010 - 11:37 #1
1. Lyder umiddelbart mærkeligt. Jeg ville verificere at AfterUpdate på kontrollens event kører som/når forventet (læg lidt kode ind med en MsgBox), og derpå kigge på om macroen gør det den skal.

2.
Hvad med at save din record i knappens event med RunCommand acCmdSaveRecord

3.
Hvad er problement med CASE?

vbKeyUp 0x26 (38 decimal)UP ARROW key
vbKeyDown 0x28 (40 decimal) DOWN ARROW key
Avatar billede sigyn Seniormester
07. september 2010 - 12:43 #2
1) msgboksen kommer fuldstændig som den skal ?? og jeg synes ikke, at der er fejl i min kode, men makroen kører stadig ikke, kan være, at det hænger sammen med, at det er en opdateringsforespørgsel den skal køre, og mit felt er jo ikke gemt endnu, det begynder at dæmre...

2) Der var de første 20 points :-) Jeg havde prøvet med DoCmd.Save, det var ikke godt nok, og så er det nok noget lidt tilsvarende jeg skal have flettet ind i 1) Jeg kunne selvfølgelig flytte min makro hen på knappen (2), men den henter nogle data, som jeg gerne vil have inden.

3) Nu har jeg prøvet at sætte den første kode ind, og der sker aldrig en s... Mit grundlæggende problem er nok, at jeg simpelthen ikke fatter hvad de 40 og 38 overhovedet står for, skal jeg skifte det ud med noget andet, eller kan jeg bruge dine koder, og sætte dem ind hvor ?
Avatar billede neoman Novice
07. september 2010 - 12:59 #3
1) Hvis "macroen kører ikke " men MSgBox kommer op, så er eventen jo ok, og der er vel noget galt med macroen

3). KeyCode er en kode sendt når en knap trykkes ned, så man kan genkende hvilken knap der er blevet trykket på. Den sub skal trigges af formularens KeyDown event, så der skal du lægge koden ind.

Hvis dette skulle være helt pænt, så burde koden se ud som følger:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyUp
            docmd.GoToRecord,,acprevious
        Case vbKeyDown
            docmd.GoToRecord,,acNext
    End Select
End Sub
Avatar billede sigyn Seniormester
07. september 2010 - 13:16 #4
1) Nej der er ikke noget galt med macroen , det ved jeg, men det bider sig selv i halen, har jeg lige konstateret, for som sagt, så kører den en opdateringsforespørgsel. Den henter nogle værdier fra tabel2 og opdater dem i tabel1. Problemet er "dobbelt", for den værdi den skal bruge, for at finde værdierne i tabel2 er jo min ikke gemte værdi i tabel1, og da det samtidig er nøglefeltet, kan jeg jo heller ikke gemme det to gange, så det kan godt være, at jeg bare er nødt til, at flytte macroen hen på knappen så den kører, når der er gemt.

3)Nu har jeg prøvet at sætte din kode ind (copy and paste), og der sker stadig ingen ting. Det er rigtig forstået, ikke ? at den burde virke, så man kan pruge pil op og ned i formularen, så man kommer række op og ned. Eller har jeg totalt misforstået noget ?
Avatar billede neoman Novice
07. september 2010 - 13:21 #5
3) FOr at formen skal fange hvilken knap der er blevet trykket på, skal du også lige sætte KeyPreview til Yes (nederst på listen af alle de events som tilhører formularen). Du har vel overvejet om det er en god ting, at omdefinere de to navigatonsknapper fra at navigere i selve formularen, til at navigere mellem records?

1). DEn kan jeg ikke lige greje - hvis du kører fast i det kan du jo bare spørge igen.
Avatar billede sigyn Seniormester
07. september 2010 - 14:07 #6
3) Tadah, nu virker det også :-) Og nej, det har jeg ikke overvejet, kan man det ? og hvad vil fordelen være ved at gøre det således ? jeg har stadig rigtig meget at lære, og er klar over, at der er mange smarte ting rundt omkring, som jeg bare ikke har opdaget endnu, tit er det jo tilfældigheder. Jeg var ved at lede efter noget helt andet, da jeg fandt det spørgsmål, som jeg linker til øverst, og kunne se, at det var vist noget jeg ku' bruge.

1) Den er også lidt svær at forklare, men nu har jeg i hvert fald en tålelig løsning, ved dels at køre macroen på min knap, efter at jeg har brugt løsning 2) og endvidere på formularens AfterUpdate, hvis jeg nu ikke vil bruge knappen, men blot videre til næste post. Det er ikke helt, som jeg kunne tænke mig det, men det virker.
Så du må gerne lægge et svar :-)
Avatar billede neoman Novice
07. september 2010 - 14:47 #7
Oki

Det med omdefineringen er jo noget du lige har gjort - normalt vil en OP/NED-knap jo flytte fokus mellem formularens felter, mens ved at gøre det vi gjorde, så har vi disablet den funktion.
Avatar billede sigyn Seniormester
07. september 2010 - 19:15 #8
Nok engang, tak for hjælpen :-)
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