Well, nothing is locked at all (after population is complete). That is, once
ADO finishes pulling all of the rows out of the authors table and copying
them to your client (a bad idea), the locks are released--unless you use a
Pessimistic lock. Optimistic (or BatchOptimisitic) cursors don't hold locks
on the rows post population.
Please reply only to the newsgroup so that others can benefit.
This posting is provided "AS IS" with no warranties, and confers no rights.
> William, when I use adLockBatchOptimistic and SELECT * FROM AUTHORS what's
> locked then ??
> > Ah no. These Recordset "versions" are local to your client, and don't
> > reflect the state of the database.
> > The only way to prevent others from changing data while you're working
> > is to lock it using a Pessimistic lock.
> > WARNING: Pessimistic locks prevent updates to the entire rowset. That
> > you execute SELECT * FROM AUTHORS, all of the rows in the AUTHORS table
> > locked until you close your recordset.
> > No, you can't use client-side disconnected cursors if you want to use
> > pessimistic locking. I drone on and on about this in my books. There are
> > lots of examples there.
> > hth
> > ____________________________________
> > Bill Vaughn
> > www.betav.com
> > Please reply only to the newsgroup so that others can benefit.
> > This posting is provided "AS IS" with no warranties, and confers no
> > __________________________________
> > > Hi Folks,
> > > I really need your help. One thing first:
> > > I am searching for a solution since month and I have read some hundred
> > > articles about it but I did NOT find the solution. Lots of Postings in
> > > Newsgroups handle it but I have NOT seen the solution!!!
> > > So here we go:
> > > I use Visual Basic 6 ServicePack 5
> > > Access 97 (Jet with SP3?); although I specify Jet 4.0 to use I think
> > > I've read that Jet 3.6 is used with Access 97?!
> > > ADO 2.7
> > > I use disconnected ADO recordsets in my Prog for a Multiuser
> > > environment.
> > > Settings for connection:
> > > Acces*issions: no change
> > > IsolationLevel: no change
> > > CursorLocation: adUseClient
> > > ShareDenyNone + ReadWrite
> > > Settings for recordsets:
> > > adUseClient
> > > therefore: adOpenStatic
> > > adLockBatchOptimistic
> > > I know that a recordset (or each field to be more precise) has an
> > > "UnderlyingValue", "OriginalValue" and "Value". What I expect is, that
> > > ADO (or the Provider) uses "OriginalValue" and "Value" to determine,
> > > if there are any changes since fetch. What I ALSO EXPECT is that ADO
> > > uses "UnderlyingValue" and "OriginalValue" to determine, if the
> > > underlying table was changed. So I would expect that the provider
> > > performs this when/before I do an update of a value!?!
> > > But I get absolutely no warning and the users overwrite their values
> > > without noticing.
> > > I tried a lot of things like transactions but the values will be
> > > overwritten anyway...
> > > I've read a lot about all these things but I can't find my error and
> > > I've seen nowhere the solution.
> > > The solution btw should be quite simple because this should be handled
> > > by the provider automatically...
> > > I just want to a signal that says: the original values have been
> > > changed; do you want to cancel?
> > > If there IS a post providing a solution for EXACTLY this problem,
> > > please tell me where!
> > > BIG thnx
> > > Harald