尝试在Access数据库中添加记录时出现错误“80040e07”

时间:2012-10-12 11:05:15

标签: ms-access asp-classic

尝试使用经典ASP在Access中添加记录时,我收到错误80040e07。代码昨天工作得很好。

  

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

     

标准表达式中的数据类型不匹配。

     

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

字段 btitle bname baddress bphone bpincode 可以是空白而其他人是强制性的。

我的代码:

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";

2 个答案:

答案 0 :(得分:2)

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

'rs.open "insert into users ...

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

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

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

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

答案 1 :(得分:1)

如果您使用经典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