【问题标题】:Error '80040e07' when trying to add a record in Access database尝试在 Access 数据库中添加记录时出现错误“80040e07”
【发布时间】:2012-10-14 16:51:41
【问题描述】:

尝试使用经典 ASP 在 Access 中添加记录时出现错误 80040e07。该代码昨天运行良好。

Microsoft JET 数据库引擎错误“80040e07”

条件表达式中的数据类型不匹配。

/alumni/admin/addvalue.asp,第 3 行

btitlebnamebaddressbphonebpincode字段可以其他为必填项。

我的代码:

dim conn, rs, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, concat, sqlstr
Set conn=Server.createObject("ADODB.Connection")
Set rs=Server.createObject("ADODB.Recordset")
conn.open="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("\alumni/alumni.mdb") & ""
t1=Request.form("txtfname")
t2=Request.form("txtlname")
t3=Request.form("txtprn")
t4=Request.form("txtbdate")
t5=Request.form("gender")
t6=Request.form("txtmail")
t7=Request.form("txtaddrs")
t8=Request.form("txtcity")
t9=Request.form("txtstate")
t10=Request.form("txtpincode")
t11=Request.form("txtpphone")
t12=Request.form("txtsecphone")
t13=Request.form("drpdegree")
t14=Request.form("drppassyear")
t15=Request.form("txtdesg")
t16=Request.form("txtcname")
t17=Request.form("txtcaddr")
t18=Request.form("txtccity")
t19=Request.form("txtcstate")
t20=Request.form("txtcpincode")
t21=Request.form("txtcphone")
t22=Request.form("txtcmail")
concat=t14&t3
if(t20="")then
    t20=0
end if
sqlstr="insert into users(userid,passwd,utype,ufname,ulname,uprnumber,ubdate,ugender,uemail,uaddress,ucity,ustate,upincode,upphone,usphone,udegree,upassyear,btitle,bname,baddress,bcity,bstate,bpincode,bphone,bemail)values('"&t6&"','"&concat&"','student','"&t1&"','"&t2&"','"&t3&"','"&t4&"','"&t5&"','"&t6&"','"&t7&"','"&t8&"','"&t9&"','"&t10&"','"&t11&"','"&t12&"','"&t13&"','"&t14&"','"&t15&"','"&t16&"','"&t17&"','"&t18&"','"&t19&"','"&t20&"','"&t21&"','"&t22&"')"
response.write("this is the string"&sqlstr)
'response.write("THIS IS PASSWORD "+concat)
rs.open "insert into users(userid,passwd,utype,ufname,ulname,uprnumber,ubdate,ugender,uemail,uaddress,ucity,ustate,upincode,upphone,usphone,udegree,upassyear,btitle,bname,baddress,bcity,bstate,bpincode,bphone,bemail)values('"&t6&"','"&concat&"','student','"&t1&"','"&t2&"','"&t3&"','"&t4&"','"&t5&"','"&t6&"','"&t7&"','"&t8&"','"&t9&"','"&t10&"','"&t11&"','"&t12&"','"&t13&"','"&t14&"','"&t15&"','"&t16&"','"&t17&"','"&t18&"','"&t19&"',"&t20&",'"&t21&"','"&t22&"')",conn

JavaScript 代码:

var fname = '<%=t1&t2%>';
var email='<%=t6%>';
var passwd='<%=concat%>';
alert('hi,'+fname+'your regestration is successful.'+'\nyour Id='+email+'\nPassword='+passwd);
window.location="http://localhost/alumni/default.asp";

【问题讨论】:

  • 小心你的数字字段。插入数据库时​​无需使用单引号(' ')。另一方面,在插入字符串时必须使用单引号。插入与数据类型匹配的有效数据
  • 如果在@polin 评论后现在解决了,请让他知道(使用@ 像我现在所做的那样通知)然后他会将其发布为您可以接受的答案。

标签: ms-access asp-classic


【解决方案1】:

像这样禁用rs.open 行...

'rs.open "insert into users ...

然后在浏览器中打开addvalue.asp 并复制此行的输出。

response.write("this is the string" & sqlstr)

启动 Access,创建一个新查询,切换到 SQL 视图,然后将复制的内容粘贴到 sqlstr 的输出中。如果查看 SQL 语句没有立即澄清数据类型不匹配错误,则必须检查字段列表中每个字段的数据类型,并将其与您尝试插入的值进行比较。

但是,在您的 ASP 代码中,我认为您应该使用 ADO Command 对象,并将您的 INSERT 语句修改为参数查询。然后使用Parameters Collection 添加值。

【讨论】:

    【解决方案2】:

    如果您正在使用经典的 ASP 写入 Access 文件,则上面的代码看起来是用 php 编写的。您不插入到 ASP 中,而是更新或添加新的。由于有多种方法可以建立连接,我不会进入连接字符串,但您的查询语法应该

    例子:

     rs.open "users", conn, 3, 3
     rs.AddNew
    
     rs("passwd")=request.form("password")
     rs("username")=request.form("username")
     etc...
    
     rs.update
     rs.close
     conn.close
    

    【讨论】:

    • 这是完全有效的经典 ASP 代码,仅此而已。 +1 建议,AddNew 有时确实可以让事情变得更简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2015-01-22
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多