Question : Access 2000 front end to SQL 2000.

I am using Access 2000 as a front end to a table on SQL 2000.  When I do a simple query in Access I get a message that some of the records are currently locked and will not let me change or delete the locked records.  No one else is using the table.   I can update them in SQL, but, most of my applications are in ACCESS. How do I unlock the records so my ACCESS applications will run?   Cathy

Answer : Access 2000 front end to SQL 2000.


I think dqmq has done a great job of describing the process Access performs during updates (note this is not the same as code from Access or even DML queries executed against the data).
Namely, when the row check for apparent concurrency issues is performed.

However I believe you when you say you're not doing anything else - and are just experiencing these issues as if they were entirely ethereal.
It would certainly seem to be the old Floating Point data type check.

When Access performs this row comparison, it checks every field. (A potentially relatively inefficient process in itself - but usually not a problem). However, floating point data types (specifically Float or Real) can cause inexact comparisons - even when the data does match in theory  (i.e. it hasn't been changed by you or another user).

Since SQL Server 2000, the standard quick fix is to add a TimeStamp column to your table. Whether you employ this or not in your UI, Access will use it to determine concurrency access to that row (instead of checking each field) and that alone - circumventing the floating point issue.

There are fairly unlikely sideeffects of a TimeStamp column in Access (AFAIRC you'd need two subforms on the same parent with the same source table - inevitably pretty rare).

Don't forget to Refresh your table links once you've added the TimeStamp column to the SQL table.


Random Solutions  
programming4us programming4us