A: 

IN the past, I've had some wierd problems in Access occur if the SQL Server linked table did not have a primary key. If your table doesn't have a primary key, it doesn't know which record to update. I know I got a similar message for this once but it was years ago, so I don't know if this is your problem.

HLGEM
All tables referenced by the query on which this form is based all have primary keys - so I don't think my problem and yours are related (could be wrong though).
Comrad_Durandal
Do they have timestamps? Timestamps assist Access in refreshing the data.
David-W-Fenton
+1  A: 

A few comments:

  • is there any particular reason you save the form's data (set Dirty=false) before changing the other field's value (which will make the form dirty again)?
    I would first change the other field's data then save the form's data, otherwise the form is always dirty.

  • changing control's values from code does not call their events, so changing chkSupRequirePrice's value from chkSupAllowBlankPrice_AfterUpdate() will not call chkSupRequirePrice_AfterUpdate().

  • Instead of putting specific code into each event, it's better to regroup everything into the same, say, Update() sub called from each event handler.
    It will make it easier to manage you code and its side effects because it's the same piece of code that's called all the time.

  • having said that, your code should work, so I'm guessing the issue comes from somewhere else in your code.
    Write conflicts happen if the same record is already opened for editing elsewhere.
    You can play around with the type of locking and see if it changes anything.

  • to see if the issue is really related to your SQL Server setup, try to unlink the table and instead copy it into your local Access database to see if you're still getting this issue when dealing with a local Access table.

Renaud Bompuis
I tried editing the straight table on which the query is based, on which the form is based which started this whole thing. It won't let me edit values for already entered records, despite edits being allowed on the form. I get the same Write Conflict dialog, except if I log into the server and enter the values directly from within the Server Management Studio console.
Comrad_Durandal
Do you mean you can't edit the data once the underlying original table is bound to the form? What error are you getting?Did you try to get the table and its data from SQL Server to reside in your local Access database? Are you still getting these errors?It's going to be hard to get an answer to your problem without having a look at the whole thing. Maybe the query is too complex and it's become read-only.Unfortunately, the problem doesn't seem to be located in what you provided here, so it's hard to guess.
Renaud Bompuis
Basically, I tried to enter data into the datasheet view of the query on which the original form was based - and I still got a write conflict. I went to the linked table within the Access application from which the query was generated, and it too gave me a Write conflict when I tried to alter existing values. The only way the data was accepted was if I went to the SQL Server's management console directly, executed a 'Edit Top 100 records' and enter the data there. Then it would update.
Comrad_Durandal
A: 

There is a difference between how Access handles Yes/No checkbox values and SQL Server. When translating Yes/No booleans from Access to SQL Server, you must remember to define a default state as well as mark it as requiring an answer. Otherwise, you will get write conflicts every time, and it will prevent the record from being saved with your changes once the initial values have been set.

Comrad_Durandal