Avatar billede pokejohn Nybegynder
27. april 2005 - 21:45 Der 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

Så kom jeg tilbage 'mugs'... :D
27. april 2005 - 21:48 #1
Den simple og ukritiske løsning:

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
Avatar billede mugs Novice
27. april 2005 - 21:48 #2
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
Avatar billede pokejohn Nybegynder
27. april 2005 - 21:58 #3
Begge løsninger virker, så I må deles... :-)

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..
27. april 2005 - 22:01 #4
Helt korrekt antaget.

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)
Avatar billede mugs Novice
27. april 2005 - 22:01 #5
Korrekt.

Du kan lave en Select Case og bestemme hvad der skal ske afhængig af errornr:

Select Case errornr
Case is = 2501
Exit sub
Case is = 1234
msgbox "Der opstod en kørselsfejl"
end select

Ideen er god nok men syntaksen er ikke afprøvet :o)
27. april 2005 - 22:04 #6
Mugs, jeg forstår ikke helt hvordan du kan bruge "errornr"!? Den kender jeg ikke. Jeg plejer at bruge Err (eller evt err.number). F.eks:

Select Case Err
  Case 2501
      resume next
  Case else
      msgbox "Der opstod en kørselsfejl"
end select
Avatar billede mugs Novice
27. april 2005 - 22:06 #7
Thomas > Som jeg skrev er syntaksen ikke afprøvet, men ideen er god nok.
27. april 2005 - 22:07 #8
ah :o)
Avatar billede pokejohn Nybegynder
27. april 2005 - 22:09 #9
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

Og der er brugt errornr..

Jeg takker i hvert fald for svar..!
Avatar billede mugs Novice
27. april 2005 - 22:12 #10
hæ hæ :o)
27. april 2005 - 22:15 #11
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
Avatar billede pokejohn Nybegynder
27. april 2005 - 22:18 #12
Okay... :D

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..
Avatar billede mugs Novice
27. april 2005 - 22:19 #13
OK - Thomas får det sidste ord. Godnat de Hr.
27. april 2005 - 22:20 #14
:o)

G'nat
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