Link to home
Start Free TrialLog in
Avatar of SteveL13
SteveL13Flag 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
Avatar of Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1)
Flag of United States of America image

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
Avatar of 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
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
Same error on

ctl.Locked = Me.chkbxFormLocked.Value
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
Same error using:

Me(ctl.Name).Locked = Me.chkbxFormLocked.Value
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.
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

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....
Avatar of COACHMAN99
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
Avatar of Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1)
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial