|
Error:
-
|
Microsoft OLE DB Provider for
ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft
Access Driver] Operation must use an updateable query.
/tablename_edit.asp, line xxx
|
Solution:
Scenario1: Testing on
the Web Server
If you are testing the program at web-server, your web hosting
provider should have a designated folder for databases where
correct permissions are already set. You need to move database file
to that directory and update connection string accordingly.
Example:
Let's say you have the following directory structure on you web
server:
cgi-bin
database
logs
www/asp/db
Where:
database - designated database
folder
www/asp - folder where ASP files
reside
www/asp/db - folder where database file
resides
Old connection string should look like this:
strConnection = "Provider=MSDataShape;DBQ="
& server.mappath("db\db1.mdb") &
";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS
Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
New connection string in this example will be:
strConnection = "Provider=MSDataShape;DBQ="
& server.mappath("..\..\database\db1.mdb")
& ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS
Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
Possible problem:
Some Web servers do not allow parent paths.
Solution:
If parent paths are not allowed you can specify full physical
path to database instead. To find where exactly database file
resides put the following test.asp file to the root directory and
run it in browser.
test.asp:
<% response.write Server.MapPath("test.asp") %>
It should print something like this:
W:\Webspace\resadmin\xlinesoft.com\www\test.asp
Now open include/dbconnection.asp file in text editor. It should
look like this:
strConnection = "DBQ=" &
server.mappath("..\database\db1.mdb") &
";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS
Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
Here is how you need to modify it:
strConnection = "DBQ=W:\Webspace\resadmin\xlinesoft.com\database\db1.mdb";Driver={Microsoft
Access Driver (*.mdb)};DriverId=25;FIL=MS
Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
Scenario2:
Testing Locally
If you are testing locally and received the above described
error, that usually means that there is a permission problem. To
fix that, you need to give full permission to EVERYONE to the directory where
database is located. To do that ,you need to:
-
Right-click on the folder where the database is located
-
Go to Properties
-
Go to Security
-
Add user named EVERYONE
(if don't exists)
-
Assign Full Permissions for user EVERYONE
-
Click OK

For Windows XP users
only:
If permission tab is not enabled or missing or sharing tab does
not allow to grant the permission, you need to do the
following:
-
Click OK
-
Now you can right-click on the folder where the database is
located
-
Go to Properties
-
Go to Security
-
Add user named EVERYONE
(if don't exists)
-
Assign Full Permissions for user EVERYONE
-
Click OK
|