27. april 2005 - 21:45Der er
12 kommentarer og 2 løsninger
Fejl ved annullering af søgning
Jeg har fået lavet en lille oversigt over mine forskellige formulare i min database. Og det virker fint nok, bortset fra et par småting... I et par af mine forespørgsler har jeg en søgefunktion "Between [dato] and [dato2]" f.eks. Det virker fint nok hvis jeg trykker på min knap i oversigten og skriver to datoer ind, så finder den, som den skal, de resultater, som matcher mit input. Hvis jeg derimod trykker annullér i popup vinduet hvor man skal indtaste datoen, melder den fejl. Fejlen jeg får, er som følger:
Run-time error '2501': OpenFrom-handlingen blev annulleret.
[Debug] [End] [Help]
Kan man gardere sig mod denne fejl..
Min kode til knapper ser således ud:
Private Sub knap10_Click() DoCmd.OpenForm "fm_pro_maerker" [Forms]![fm_pro_maerker].AllowEdits = False 'rettelser [Forms]![fm_pro_maerker].AllowDeletions = False 'slet [Forms]![fm_pro_maerker].AllowAdditions = False 'tilføj End Sub
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Private Sub knap10_Click() On Error resume next DoCmd.OpenForm "fm_pro_maerker" [Forms]![fm_pro_maerker].AllowEdits = False 'rettelser [Forms]![fm_pro_maerker].AllowDeletions = False 'slet [Forms]![fm_pro_maerker].AllowAdditions = False 'tilføj End Sub
On Error goto errorhandler DoCmd.OpenForm "fm_pro_maerker" [Forms]![fm_pro_maerker].AllowEdits = False 'rettelser [Forms]![fm_pro_maerker].AllowDeletions = False 'slet [Forms]![fm_pro_maerker].AllowAdditions = False 'tilføj errorhandler: if errornr = 2501 then exit sub end if
Så vidt jeg kan se med min logiske sans vil den øverste løsning gøre så alle fejl forudsaget af knap10 bliver ignoreret, mens det ved den sidste kun er fejl 2501 som bliver ignoret.. Ikke sandt? Rart at vide; det kunne jo være at man fik brug for det en anden gang..
Som jeg skrev, så var min løsning "ukritisk". Men der er mange situationer, hvor der ikke rigtig kan opstå andre fejl. Så er det nemmere end den anden løsning. Og hvis hver eneste procedure skal have fejlbehandling, så giver det mange ekstra linier, hvis man ikke tager nogle genveje af og til ;o)
Jeg tog bare denne og satte ind, og det virkede fint...
On Error goto errorhandler DoCmd.OpenForm "fm_pro_maerker" [Forms]![fm_pro_maerker].AllowEdits = False 'rettelser [Forms]![fm_pro_maerker].AllowDeletions = False 'slet [Forms]![fm_pro_maerker].AllowAdditions = False 'tilføj errorhandler: if errornr = 2501 then exit sub end if
ok, men rent faktisk virker koden ikke (selvom du oplever at den gør). Det er kun fordi der ikke er mere kode i proceduren og fordi du ikke har variabelcheck på din kode (Option Explicit i toppen af modulet)
Den korrekte syntaks er:
On Error goto errorhandler DoCmd.OpenForm "fm_pro_maerker" [Forms]![fm_pro_maerker].AllowEdits = False 'rettelser [Forms]![fm_pro_maerker].AllowDeletions = False 'slet [Forms]![fm_pro_maerker].AllowAdditions = False 'tilføj Exit Sub errorhandler: if Err = 2501 then exit sub end if
Jeg bruger nu også den anden, da det bare er en mindre database der ikke rigtig skal bruges til noget, og det derfor er nemmere bare at slå ned på alle fejl. Selvom det måske ikke er den bedste 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.