FIX : "Operation must use an updateable query" error..

Microsoft JET Database Engine (0x80004005)
Operation must use an updateable query.
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an updateable query.
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[Microsoft][ODBC Microsoft Access 97 Driver] Record(s) can't be read; no read permission on '<table>'.
Microsoft JET Database Engine error '80040e09'
Cannot update. Database or object is read-only.
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[Microsoft][ODBC Microsoft Access 97 Driver]You don't have the necessary permissions to use the '<table>' object.
Have your system administrator or the person who created this object establish the appropriate permissions for you.
This error typically occurs when your script attempts to perform an UPDATE or some other action that alters the information in the database.

This error occurs because ADO is unable to write to the Microsoft Access database due to insufficient write/modify permissions, which can be easily fixed by granting read/write to IUSR_<machineName> and IWAM_<machineName>.

IUSR_<machineName> and IWAM_<machineName> come into focus when an anonymous web user needs to modify the Microsoft Access database & while doing so Jet creates an .ldb file to handle database locking. If the above mentioned 2 users don't have the necessary permissions, the lock file isn't created & ultimately the Microsoft Access database can't be modified..

To fix this problem, right click on the folder which holds the Microsoft Access database & choose properties. Use the Security tab in Explorer to adjust the properties for this folder so that the Internet Guest account has the correct writable permissions.

Also make sure that the MDB file itself isn't marked as read-only, and that you don't have the MDB file open; particularly in exclusive mode; while trying to reach the Microsoft Access database from ASP scripts.


NOTE: You may also need to give read/write permission on the "Temp" folder because Jet may create temporary files in this directory.