Avatar billede Freddy_J Nybegynder
24. september 2009 - 21:27 Der er 7 kommentarer

Access 2003 - Fejlkode 3022 - action i makro

Jeg ved godt at denne fejlkode kommer hvis man er ved at dubblere et indeks.
Mit problem er at formularen bruges rigtig meget til indtastninger. Når den "Forventede" fejlkode kommer så kan man trykke "OK" med enter tasten.
Så er man tilbage i formularfeltet, men for at komme¨til knappen "Opdater eksisterende post" skal man så have fat i musen for at klikke på den. Ellers vil fejlkoden bare komme igen.

Altså vil jeg gerne kunne fange den forventede fejlkode ved hjælp af en makro jeg kan tildele "Exit feltet". Det gør ikke noget at fejlkoden ignoreres.
Umiddelbart kan det virke lidt pjattet ikke at ville bruge musen - så er alt jo ok, men skal man taste rigtig mange poster ind i formularen daglig, hvoraf flere vil være med fejlmeddelelsen, så er man nød til at se på alternativer til at bruge den f..... mus der kan give skader.

Det er et meget stort problem, så der er 200 point til den der kan hjælpe med en løsning
Avatar billede Slettet bruger
24. september 2009 - 21:55 #1
du skal gøre det ude i din vba... a'la...

Private Sub Form_AfterUpdate()
on error goto err_Form_AfterUpdate

Her skal evt. anden kode placeres (hvis du har noget sådant!~)

exit sub
err_Form_AfterUpdate:
If err.number = 3022 then
exit sub
else
msgbox err.number & " " & err.description
end if
End Sub

...nu ved jeg ikke om det præcis er på formens efteropdateringshændelse du skal fange den på.. det tror jeg, men du må prøve dig lidt frem!~)
Avatar billede hugopedersen Nybegynder
25. september 2009 - 10:20 #2
Ville den 'elegante' metode ikke være at du lavede en funktion der checker for om de ting du taster ind i de felter der er med i dit index allerede findes og så smider en custom meddelelse op hvor man kan vælge at gå til eksisterende record. Hvis du laver en custom form kan du selv bestemme shortcuts.


(formens beforeupdate vil være nærliggende til normale datacheck da den har en cancel mulighed, men denne bør køres på hvert felt i index)

Sådan ville jeg gribe det an - og har gjort det flere gange
Avatar billede mugs Novice
25. september 2009 - 12:46 #3
Jeg vil opponere lidt overofr spg's kode. Hvis der anden kode efter linien:

on error goto err_Form_AfterUpdate

vil denne kode ikke blive afviklet.

Så i stedet for Exit Sub, vil jeg bruge Resume Next. Hvis fejlen 3022 opstår, vil koden fortsætte efter den linie, der fremprovokerer fejlen.
Avatar billede Slettet bruger
25. september 2009 - 13:20 #4
det er korrekt, evt. anden kode vil ikke blive afviklet hvis der opstår en fejl!~)

...og som mugs nævner, så kan man altid sætte den store hammer på:

private sub bla.bla.
on error resume next
end sub
Avatar billede Slettet bruger
25. september 2009 - 13:23 #5
hugopedersen har forresten også en god pointe!~)
Avatar billede mugs Novice
25. september 2009 - 15:01 #6
private sub bla.bla.
on error resume next
end sub

Vil fortsætte med at eksekvere koden uanset hvilken fejl der opstår. Der skal naturligvis måkes på, om det er fejl 3022, opstår denne fejl så Resume Next, ellers gør noget andet.
Avatar billede mugs Novice
16. december 2009 - 21:56 #7
Og hvordan går det her?
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