On a recent project where I was porting an Access application so that it would use an Oracle database as its backend data store I came across a frustrating error where when I opened a form that was directly linked to a table (via the form's datasource property) I would get the following error:
After almost 3 days of following various leads that did not lead anywhere I finally found out what was causing the error.
If you are having the same issue that I had, then if you open the linked table in Access, you will see that the table cannot be edited (The insert menu will be disabled).
So you can immediately stop fiddling with the code, form properties, field properties, etc. as that is not what is causing the problems. The problem is entirely database driven. In my opinion either this is a bug in Access or Access is unable to determine the complete properties for the table and hence decides to put the table in a read-only mode.
In my case what I did was I removed all the constraints and indexes on the table and added them one at a time. Magically this fixed my problem. (Each time I changed a property on the table I would refresh the affected linked table in access and make sure that the table was still editable).
Unfortunately at this stage I do not have an exact cause for the problem. In the beginning I thought it was because the table did not have a primary key and then I thought it was default values that were strings and finally I thought it had something to do with indexes on the table. But once I blew away all of those and re-added them to the table, Access suddenly decided that the table was kosher for editing!. Oh! how I hate Access!.