You may receive write conflict errors when you update records of a linked SQL Server table in Access 2000 (280730)
The information in this article applies to:
This article was previously published under Q280730 Advanced: Requires expert coding, interoperability, and multiuser
skills. This article applies only to a Microsoft Access database (.mdb).
For a Microsoft Access 97 version of this article,
see
278696. SYMPTOMS You receive the following write conflict error when you try
to update records in a linked SQL Server table: This
record has been changed by another user since you started editing it. If you
save the record, you will overwrite the changes the other user made.
Copying the changes to the clipboard will let you look at the values the other
user entered, and then paste your changes back in if you decide to make
changes. You are then given the following options: Save Record, Copy to Clipboard, or Drop Changes. CAUSE Access is creating Null bit fields, which causes a type
mismatch.
or
The linked table is using fields defined as
floating point data type (i.e. Real). This data type allows for storing
"floating point" number data. When the edited record is passed to SQL Server,
if both engines see the data in these fields as having the identical value,
there is no problem. However, because of the "rounding" algorithms used by JET
and SQL Server, the actual value compared may be different. Since JET has to
review each field and see if there are any concurrency issues, when JET
compares the number it sees (in the "Real" data type field) to that value
stored in SQL Server, if it does not match exactly the record is assumed to
have been changed and a Write Conflict occurs.RESOLUTION To resolve the problem with bit data type, do one of the
following:
- Using SQL Server, open the table in Design view, and assign
a default value of 0 (zero) on all bit fields.
NOTE: With this option, you must update records that were entered
before this change was made. See the next item for more
information.
- Using SQL Server, run an Update Transact-SQL statement
against the table, and set all bit fields that have a value of Null to a new
value of 0 or 1.
- Using SQL Server, change the bit fields to some other data
type, such as int or tinyint.
- Using SQL Server, add a timestamp field to the
table.
- Use a Microsoft Access project (*.adp) instead of an Access
database (*.mdb).
To resolve the problem with floating point data types, do
one of the following:
- Add a timestamp column to the SQL table. (JET will then use
only this field to see if the record has been updated.)
- Modify the data type that is in SQL Server to a
non-floating point data type (for example, Decimal).
- Run an Update Query to update the record. You must do this
instead of relying on the recordset update.
NOTE: If you make changes to the data types in the SQL Server tables,
relink the tables in Microsoft Access.
Modification Type: | Minor | Last Reviewed: | 7/29/2004 |
---|
Keywords: | kbdesign kbDatabase kberrmsg kbprb KB280730 kbAudDeveloper |
---|
|