Link to home
Start Free TrialLog in
Avatar of nfinite
nfinite

asked on

Microsoft JET Database Engine error '80004005'

Microsoft JET Database Engine error '80004005'

Operation must use an updateable query.

/add_file.asp, line 27

<%
Option Explicit
%>
<html>
<head>
<title>Add File To Data Base</title>
<style fprolloverstyle>A:hover {color: #FF0000; font-family: Verdana; font-size: 12pts.}
</style>
</head>
<body bgcolor="#FFE4CA" vlink="#0000FF">
<%


Dim FilePath, Description, conn, path, DsnAccess, rs, sqlstring

FilePath = Trim(Cstr(Request.Form("FilePath")))
Description = Trim(Cstr(Request.Form("Description")))

If FilePath <> "" and Description <> "" Then
            set conn = server.createobject("adodb.connection")
            path = server.mappath("filedb.mdb")
            DsnAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& path
            conn.open DsnAccess
            set rs = server.createobject ("adodb.recordset")
            
            sqlstring = "insert into list(description, filepath) values('" & Description & "', '" & FilePath & "')"
            set rs = conn.execute(sqlstring)
            
            conn.close
            set rs = nothing
            set conn = nothing
      
            Response.Write "<font face=""Verdana"" size=""2"">File successfully submited!</font>"
            Response.Write "<p><font face=""Verdana"" size=""2""><a href=""add_file.asp"">Submit More Files</a> | <a href=""default.asp"">Execute Files</a> | <a href=""delete.asp"">Delete Files</a></font></p>"
      
Else
%><form method="POST" action="add_file.asp">
<p>
  <font face="Verdana"><b>Choose File to Add to Data Base</b></font></p>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="13%">
  <font face="Verdana" size="2">File Path:</font></td>
    <td width="87%">
  <input type="file" name="FilePath" size="60" style="font-family: Verdana; font-size: 12pts."><font face="Verdana" size="2"> </font>
    <font size="2">(*)</font></td>
  </tr>
  <tr>
    <td width="13%">
  <font face="Verdana" size="2">File Description:</font></td>
    <td width="87%">
  <input type="text" name="Description" size="60" style="font-family: Verdana; font-size: 12pts."></td>
  </tr>
</table>
<p>
  <font face="Verdana"><font size="1">(*) only .exe files are supported!<br>
  </font><br>
  <input type="submit" value="Submit" name="Submit" style="font-family: Verdana; font-size: 12pts.">
  <input type="reset" value="Reset" name="Reset" style="font-family: Verdana; font-size: 12pts."></font></p>
</form>
<p><font face="Verdana" size="2"><a href="upl.asp">Execute Files</a> | <a href="delete.asp">Delete Files</a></font></p>
<%
End If
%>
</body>
</html>

Any suggestions?
Avatar of j2nku
j2nku
Flag of Estonia image

Check that your internet user account has "write" permissions for this file, this is 99% the reason of this error.
Some extra info:

Internet guest accounts default username is usually IUSR_<servername> (if your server name is WEB, then it should be IUSR_WEB).
The permissions are usually lost when you overwrite the MDB file over FTP or copy it over.
Avatar of nfinite
nfinite

ASKER

I'm using www.verio.com hosting.How can i put right permissions for it?
Avatar of fritz_the_blank
You can't really get a recordset back from an INSERT, only from a SELECT. This should help:

strDataPath = server.mappath("filedb.mdb")
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"_
                  & " Data Source= " & strDataPath & ";"_
                  & " Mode=Share Deny None;User Id=admin;PASSWORD=;"

Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.ConnectionTimeout = 15
objConnection.CommandTimeout =  10
objConnection.Mode = 3 'adModeReadWrite
objConnection.Open strConnectionString
sqlstring = "insert into list(description, filepath) values('" & Description & "', '" & FilePath & "')"
objConnection.Execute(sqlstring)
Oh, since you are using option explicit (always a good idea) we need to be more careful:

Dim FilePath, Description, conn, path, DsnAccess, rs, sqlstring

FilePath = Trim(Cstr(Request.Form("FilePath")))
Description = Trim(Cstr(Request.Form("Description")))

If FilePath <> "" and Description <> "" Then
      dim strDataPath, strConnectionString, objConnection, sqlstring
      strDataPath = server.mappath("filedb.mdb")
      strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"_
                           & " Data Source= " & strDataPath & ";"_
                           & " Mode=Share Deny None;User Id=admin;PASSWORD=;"

      Set objConnection = Server.CreateObject("ADODB.Connection")
      objConnection.ConnectionTimeout = 15
      objConnection.CommandTimeout =  10
      objConnection.Mode = 3 'adModeReadWrite
      objConnection.Open strConnectionString
      sqlstring = "insert into list(description, filepath) values('" & Description & "', '" & FilePath & "')"
      objConnection.Execute(sqlstring)
Avatar of nfinite

ASKER

to fritz_the_blank

Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'strDataPath'

/add_file.asp, line 21
Oops, did you see my last post with the variables dimensioned?

FtB
Avatar of nfinite

ASKER

Microsoft VBScript compilation error '800a0411'

Name redefined

/add_file.asp, line 19

dim strDataPath, strConnectionString, objConnection, sqlstring
Okay, hang on a second and I'll redo all of this in one post.

FtB
This should be it:

<%
Option Explicit
%>
<html>
<head>
<title>Add File To Data Base</title>
<style fprolloverstyle>A:hover {color: #FF0000; font-family: Verdana; font-size: 12pts.}
</style>
</head>
<body bgcolor="#FFE4CA" vlink="#0000FF">
<%
Dim FilePath, Description
FilePath = Trim(Cstr(Request.Form("FilePath")))
Description = Trim(Cstr(Request.Form("Description")))
FilePath = Trim(Cstr(Request.Form("FilePath")))
Description = Trim(Cstr(Request.Form("Description")))

If FilePath <> "" and Description <> "" Then
     dim strDataPath, strConnectionString, objConnection, sqlstring
     strDataPath = server.mappath("filedb.mdb")
     strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"_
                       & " Data Source= " & strDataPath & ";"_
                       & " Mode=Share Deny None;User Id=admin;PASSWORD=;"

     Set objConnection = Server.CreateObject("ADODB.Connection")
     objConnection.ConnectionTimeout = 15
     objConnection.CommandTimeout =  10
     objConnection.Mode = 3 'adModeReadWrite
     objConnection.Open strConnectionString
     sqlstring = "insert into list(description, filepath) values('" & Description & "', '" & FilePath & "')"
     objConnection.Execute(sqlstring)
     
        Response.Write "<font face=""Verdana"" size=""2"">File successfully submited!</font>"
        Response.Write "<p><font face=""Verdana"" size=""2""><a href=""add_file.asp"">Submit More Files</a> | <a href=""default.asp"">Execute Files</a> | <a href=""delete.asp"">Delete Files</a></font></p>"
     
       objConnection.Close
       set objConnection = Nothing
Else
%><form method="POST" action="add_file.asp">
<p>
  <font face="Verdana"><b>Choose File to Add to Data Base</b></font></p>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="13%">
  <font face="Verdana" size="2">File Path:</font></td>
    <td width="87%">
  <input type="file" name="FilePath" size="60" style="font-family: Verdana; font-size: 12pts."><font face="Verdana" size="2"> </font>
    <font size="2">(*)</font></td>
  </tr>
  <tr>
    <td width="13%">
  <font face="Verdana" size="2">File Description:</font></td>
    <td width="87%">
  <input type="text" name="Description" size="60" style="font-family: Verdana; font-size: 12pts."></td>
  </tr>
</table>
<p>
  <font face="Verdana"><font size="1">(*) only .exe files are supported!<br>
  </font><br>
  <input type="submit" value="Submit" name="Submit" style="font-family: Verdana; font-size: 12pts.">
  <input type="reset" value="Reset" name="Reset" style="font-family: Verdana; font-size: 12pts."></font></p>
</form>
<p><font face="Verdana" size="2"><a href="upl.asp">Execute Files</a> | <a href="delete.asp">Delete Files</a></font></p>
<%
End If
%>
</body>
</html>
Avatar of nfinite

ASKER

Microsoft JET Database Engine error '80004005'

Operation must use an updateable query.

/add_file.asp, line 31

same thing as before.
Okay, the code looks good, so we need to return to j2nku's concern about permissions (we still had to do what we did above, however, so this wasn't wasted time).

Is this your server or are you using a hosting service?

FtB
Avatar of nfinite

ASKER

i'm using hosting at www.verio.com
ASKER CERTIFIED SOLUTION
Avatar of fritz_the_blank
fritz_the_blank
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Any reason for the grade of C here?

FtB
The permission problem solved this for me, thank you again!  Someone changed permissions for the site in Frontpage and somehow this replaced the permissions on this file.
Glad to have helped,

FtB