[AccessD] Allow edits = False is Allowing Edits!

Rocky Smolin rockysmolin at bchacc.com
Mon Nov 14 10:31:50 CST 2016


Dear Lists:

 

(Access 2010, Windows 10, all bound forms)

 

Client wants one user to not be able to add change delete any data except
for one field in one form.  No worries.  I already have hooks in for Access
level per user (read only, read/write, administrator). And there's not many
forms and only a few that have data entry/edit. So I made a new access level
- 2. (1 is read only, three is read/write). Since the client wasn't using
these controls that change was easy.

 

So in the dirty event of those forms I put:

 

Private Sub Form_Dirty(Cancel As Integer)

 

If gintAccessLevel < 3 Then

    MsgBox "Read Write Access Required", , vbExclamation

    Cancel = True

End If

 

End Sub

 

And that works perfectly for all of them.  Except for three. (Which are all
similar but attached to different table. )

 

So I cleverly modified the Dirty event of this form to read 

 

Private Sub Form_Dirty(Cancel As Integer)

    MsgBox "!"

If gintAccessLevel < 3 Then

    MsgBox "Read Write Access Required", , vbExclamation

    Cancel = True

End If

 

End Sub

 

And after entering a number and leaving that field.No ! appears.  A
breakpoint on the MsgBox statement confirms that the dirty event is not
triggering.

 

 

But there's more than one way to skin a cat. So in the open event of one of
those forms I put:

 

If gintAccessLevel < 3 Then

    Me.AllowAdditions = False

    Me.AllowEdits = False

    Me.AllowDeletions = False

Else

    Me.AllowAdditions = True

    Me.AllowEdits = True

    Me.AllowDeletions = True

End If

 

Poop!  Still allows editing.

 

Could the allow edits property be getting changed? So in the after update
event of one of the fields I put:

 

Private Sub fldSocietyCourseOfferingNumberOfParticipants_AfterUpdate()

    MsgBox Me.AllowEdits

End Sub

 

And when I put something into the
fldSocietyCourseOfferingNumberOfParticipants the message read False!

 

And yet, it will save that value.

 

So I changed the code in the after update event of
fldSocietyCourseOfferingNumberOfParticipants to read:

 

Private Sub fldSocietyCourseOfferingNumberOfParticipants_AfterUpdate()

    

    MsgBox "! " & gintAccessLevel

If gintAccessLevel < 3 Then

    MsgBox "Read Write Access Required", , vbExclamation

    Me.undo

End If

 

End Sub

 

And it obediently prints ! 2.  And that works - it undoes the change.  But I
would not like to have to put that code in the after update event of every
field on the three recalcitrant forms.

 

So now, of course, I'm looking for some either obvious or obscure reason why
these three forms are misbehaving.  Any suggestions welcome

 

MTIA

 

 

Rocky Smolin

Beach Access Software

760-683-5777

 <http://www.bchacc.com> www.bchacc.com

 <http://www.e-z-mrp.com> www.e-z-mrp.com

Skype: rocky.smolin

 

 



More information about the AccessD mailing list