[AccessD] Record locking

Jim Dettman jimdettman at verizon.net
Mon Jun 7 10:30:23 CDT 2010


Debbie,

<<I have a form that locks other users out when the form is dirty. I  
have tried lots of things including explicitly setting locking to no  
locks and saving on dirty with code. Unless someone can give me a new  
idea, I think I am going to have to try and rebuild the form as  
unbound.  Can anyone offer any alternative methods?>>

  "No Locks" is a misnomer. It doesn't mean that locking is not occurring.
It means "No Edit Locks", so what you end up with is optimistic locking
(Edit locks is pessimistic).  The difference between the two is when the
lock gets placed on a record.

  With Edit locks, or pessimistic locking, the lock is placed as soon as the
record starts to be edited and it is not cleared until the record is saved.
With no edit locks, or optimistic locking, the record is locked only for a
brief period when it is trying to be saved.  That sounds good, but the risk
there is that someone else may come along, read the record, and then modify
it.  If that happens, when the first user goes to save, they'll get a dialog
that the record has been modified since they ready it, with a couple of
options (discard their changes or overwrite what's there).

  When locking occurs, the lock may be on a single record with JET 4.0, or
it may be on the page.  However there are a bunch of issues with record
level locking in JET 4.0 and basically, it doesn't work :(   

  So what your getting (even though you may be set to record level locking)
and describe is page level locking. 

  A quick "fix" on tables with high concurrency issues is to pad the record
length so that the record takes up more then half a page.

  Since JET must place the entire fixed portion of the record on a single
page (everything except Memo and OLE fields), this in effect gives you
record level locking without the hassles of trying to get it to work
properly through JET itself.

  Add text fields and fill them so that the record will be larger then 2048
bytes when saved.

Jim. 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Debbie
Sent: Monday, June 07, 2010 10:06 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Record locking

Trouble is the error is happening on the user that is not dirty. The  
user that is dirty is working fine, he just locks at least one other  
user out while he is dirty.

Debbie

Sent from my iPhone

On Jun 7, 2010, at 8:53 AM, "Rocky Smolin" <rockysmolin at bchacc.com>  
wrote:

> Can you trap the locking error and issue a Me.Dirty = False in the  
> error
> routine then Resume Next?
>
> Rocky
>
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Debbie
> Sent: Monday, June 07, 2010 6:47 AM
> To: Access Developers discussion and problem solving
> Subject: [AccessD] Record locking
>
> I have a form that locks other users out when the form is dirty. I  
> have
> tried lots of things including explicitly setting locking to no  
> locks and
> saving on dirty with code. Unless someone can give me a new idea, I  
> think I
> am going to have to try and rebuild the form as unbound.  Can anyone  
> offer
> any alternative methods?
>
> Debbie
>
> Sent from my iPhone
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list