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