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

SteveL13
SteveL13 used Ask the Experts™
on
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
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Top Expert 2016

Commented:
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

Author

Commented:
Getting an error on

ctl.locked=me.chkbxFormLocked

"Object doesn't support this property or method"

Also had to comment out:
'end sub
'next
Top Expert 2016

Commented:
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
Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Author

Commented:
Same error on

ctl.Locked = Me.chkbxFormLocked.Value
Top Expert 2016

Commented:
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

Author

Commented:
Same error using:

Me(ctl.Name).Locked = Me.chkbxFormLocked.Value
Top Expert 2016

Commented:
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.

Author

Commented:
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

Top Expert 2016

Commented:
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....
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
Top Expert 2016
Commented:
one more time.. copy everything, do not make shortcut.

private sub chkbxFormLocked_afterupdate()
 dim ctl as control

 for each ctl in me.controls
  if ctl.name<>"chkbxFormLocked" then
    If ctl.ControlType = acTextBox _
        Or ctl.ControlType = acComboBox _
        Or ctl.ControlType = acCheckBox _
        Or ctl.ControlType = acListBox Then
        ctl.Locked = me.chkbxFormLocked.value
    end If
 end if
 next
 end sub

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial