Avatar billede rosco Novice
22. marts 2007 - 12:18 Der er 17 kommentarer og
1 løsning

Mindst et afkrydsningsfelt skal afkrydses inden form forlades

Jeg har en formular med 20 afkrydsningsfelter.
Jeg ville gerne have at brugeren ikke kan forlade formularen uden at have afkrydset mindst et af felterne.
r det muligt?
Avatar billede mugs Novice
22. marts 2007 - 12:43 #1
Hej rosco - Jeg har ikke tid lige nu, men bruger selv denne ved at opstille en betingelse for alle kontroller i formen:

Dim frm As Form, ctl As Control
Set frm = Screen.ActiveForm
For Each ctl In frm
If ctl.ControlType = acLabel Then ctl.Caption = "Hej"
Next ctl
Avatar billede rosco Novice
22. marts 2007 - 13:14 #2
Jeg kan ikke lige gennemskue hvordan jeg præcic skal anvende den!
Avatar billede fdata Forsker
22. marts 2007 - 18:38 #3
mugs mener vist noget i stil med:

Dim frm As Form, ctl As Control
Dim Ok as Boolean
Set frm = Screen.ActiveForm
Ok=False
For Each ctl In frm
  If ctl.ControlType = acCheckBox Then
    if ctl.Value = True then Ok=True
  end if
Next ctl
Avatar billede rosco Novice
22. marts 2007 - 19:26 #4
Har travlt lige nu, ser på det i morgen.
Kan bruger få en fejlmeddelelse, "Husk at afkrydse et felt".
Avatar billede mugs Novice
22. marts 2007 - 19:31 #5
Det er da i den stil fdata. Det var blot en kodestump jeg havde 5 min før et møde. En fejlmeddelelse vil jeg sætte ind således:

Dim frm As Form, ctl As Control
Dim Ok as Boolean
Set frm = Screen.ActiveForm
Ok=False
For Each ctl In frm
  If ctl.ControlType = acCheckBox Then
    if ctl.Value = True then Ok=True
else:
Msgbox "Du skal afkrydse"
exit sub
  end if
Next ctl
Avatar billede fdata Forsker
22. marts 2007 - 22:20 #6
>>> mugs. Jeg forestillede mig bare at man tjekkede Ok's værdi efter løkken.

Vil din løsning i øvrigt ikke medføre, at man i sidste ende er nødt til at afkrydse ALLE felterne? Den hopper ud ved den første False ;o)
Avatar billede mugs Novice
23. marts 2007 - 07:56 #7
Godmorgen fdata
Jamen det er også min tanke at løkken skal forlades ved den første false, idet rosco jo ikke vil kunne forlade formularen uden mindst eet felt er afkrydset.
Avatar billede rosco Novice
23. marts 2007 - 12:01 #8
Jeg får godtnok Meddelelsen "Du skal afkrydse", men formularen lukker, om der er sat kryds eller ej.
Avatar billede mugs Novice
23. marts 2007 - 15:03 #9
Prøv at indsætte koden i formularen VedLukning og i stedet for exit brug docmd.cancelevent. Ikke afprøvet.
Avatar billede fdata Forsker
25. marts 2007 - 18:46 #10
Jeg blander mig lige igen.
Hvis du retter min kode til:

Dim frm As Form, ctl As Control
Dim Ok as Boolean
Set frm = Screen.ActiveForm
Ok=False
For Each ctl In frm
  If ctl.ControlType = acCheckBox Then
    if ctl.Value = True then Ok=True
  end if
Next ctl
Set frm = Nothing
Cancel=not Ok

og lægger koden i Form_Unload burde det spille.

(og så tillader jeg mig at gentage: mugs' kode vil bede dig afkrydse ALLE felter, idet fejlmeddelelsen vises så snart den ser et felt, der er False. Løkken skal jo forlades, når den set et felt, der er True. Sorry, mugs)
Avatar billede mugs Novice
25. marts 2007 - 19:22 #11
Alt OK fdata :o)
Og som jeg skrev i mit første indlæg, var det en kode jeg bruger i anden sammenhæng. den er slet ikke afprøvet i dette spørgsmål.
Avatar billede rosco Novice
26. marts 2007 - 19:38 #12
Jeg prøver Fdata's kode og vender tilbage.
Avatar billede rosco Novice
26. marts 2007 - 19:49 #13
Virker:
Men Hvor skal jeg lægge Msgbox "Du skal afkrydse",
brugeren skulle gerne vide hvorfor han ikke kan lukke formularen.
Avatar billede fdata Forsker
26. marts 2007 - 23:46 #14
Skyd en linie ind i bunden:

Set frm = Nothing
if not ok then MsgBox ...
Cancel=not Ok

(hvis ok stadig er False, er der jo ikke nogen felter, der har været afkrydset)
Avatar billede rosco Novice
27. marts 2007 - 07:23 #15
Det prøver jeg i dag.
Avatar billede rosco Novice
27. marts 2007 - 21:02 #16
I skal ha' mange tak for hjælpen. Man spørger næsten aldrig forgæves her.
Mugs! det bliver fdata der går af med sejren.  ;-)
Avatar billede mugs Novice
27. marts 2007 - 21:06 #17
Meget fortjent :o)
Avatar billede fdata Forsker
27. marts 2007 - 21:35 #18
Takker for point og de pæne ord  ;o)
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