Avatar of SteveL13
SteveL13
Flag for United States of America asked on

How lock form with checkbox but be able to unlock the form with the same checkbox

I have a checkbox on a form labeled "Lock Record".  The user will use this checkbox to lock the data on the form so users can't change anything.  I'm trying the following code  which doesn't work because obviously the checkbox is locked so the user can't UNlock the data which they need to be able to do.  There must be a better way/

    If Me.chkbxFormLocked = True Then
        Me.AllowAdditions = False
        Me.AllowDeletions = False
        Me.AllowEdits = False
        Me.cmdAddRecord.Enabled = False
        Me.chkbxFormLocked.Enabled = True
    End If
Microsoft Access

Avatar of undefined
Last Comment
Rey Obrero (Capricorn1)

8/22/2022 - Mon
Rey Obrero (Capricorn1)

use the afterupdate  or change event ofthe checkbox

private sub .chkbxFormLocked_afterupdate()
dim ctl as control
for each ctl in me.controls
     if ctl.controltype<>aclabel then
         if ctl.name<>".chkbxFormLocked" then
             ctl.locked=me.chkbxFormLocked
         end if
      end if
next
end sub
next
SteveL13

ASKER
Getting an error on

ctl.locked=me.chkbxFormLocked

"Object doesn't support this property or method"

Also had to comment out:
'end sub
'next
Rey Obrero (Capricorn1)

private sub .chkbxFormLocked_afterupdate()
dim ctl as control
for each ctl in me.controls
     if ctl.controltype<>aclabel then
         if ctl.name<>"chkbxFormLocked" then
             ctl.locked=me.chkbxFormLocked.value
         end if
      end if
next
end sub
Your help has saved me hundreds of hours of internet surfing.
fblack61
SteveL13

ASKER
Same error on

ctl.Locked = Me.chkbxFormLocked.Value
Rey Obrero (Capricorn1)

private sub chkbxFormLocked_afterupdate()
dim ctl as control

for each ctl in me.controls
     if ctl.controltype<>aclabel then
         if ctl.name<>"chkbxFormLocked" then
             me(ctl.name).locked=me.chkbxFormLocked.value
         end if
      end if
next
end sub
SteveL13

ASKER
Same error using:

Me(ctl.Name).Locked = Me.chkbxFormLocked.Value
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
Rey Obrero (Capricorn1)

do a compact and repair and the do a Debug>compile

correct any errors raised

if that doesn't fix it, your form could be corrupted.

create a new form and try the codes again.
SteveL13

ASKER
Compiled.  C&R.  Copied objects to new form.  I'm now trying this ans still get the error "Object doesn't support this property or method"

Dim ctl As Control

    If Me.chkbxFormLocked = True Then
    For Each ctl In Me.Form.Controls
        Me(ctl.Name).Locked = True
    Next
    End If

Open in new window

Rey Obrero (Capricorn1)

this is not my code
 For Each ctl In Me.Form.Controls

the code I posted is
 For Each ctl In Me.Controls


and I tried it over and over again and it is working....
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
COACHMAN99

if ray's comment doesn't fix it then its possible one of the controls in the collection doesn't support the locked property.
add a msgbox ctl.name line so you can identify which one, then only set locked  'if ctl.name <> problem one,

e.g.
    If Me.chkbxFormLocked = True Then
    For Each ctl In Me.Controls
      msgbox ctl.name
        Me(ctl.Name).Locked = True
    Next
    End If

and once you know which one causes the error

    If Me.chkbxFormLocked = True Then
    For Each ctl In Me.Controls
      if ctl.name <> 'whatever' then Me(ctl.Name).Locked = True
    Next
    End If
ASKER CERTIFIED SOLUTION
Rey Obrero (Capricorn1)

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.