1

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

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

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

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

btitle 、bnamebaddressbphonebpincode字段可以为空,而其他字段为必填项。

我的代码:

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

2 回答 2

2

像这样禁用rs.open线路...

'rs.open "insert into users ...

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

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

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

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

于 2012-10-12T17:46:55.383 回答
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
于 2012-10-12T16:57:52.127 回答