注册 登录
编程论坛 ASP技术论坛

大家帮我看看这个程序错在哪里,如何修改?谢谢!!

过傻过天真 发布于 2008-07-15 23:07, 2508 次点击
先给出运行结果:
Microsoft JET Database Engine 错误 '80040e07'

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

/123456789/dlchuli.asp,行 21





<% response.Buffer=true %>
<html>
<head>
<title>登陆处理</title>
</head>
<body>
<%
n1=trim(request.Form("name"))
n2=trim(request.Form("word"))
if n1="" or n2="" then
response.write"<p align=center>出错提示:用户名、密码不能为空!</p>"
response.write"<p align=center><a href=index.asp>返回重新登陆</a></p>"
response.end
end if
dim filepath,cn1,sq1,rs
filepath=server.MapPath("wangzhan.mdb")
set cn1=server.createobject("adodb.connection")
cn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";Persist Security Info=False"
sq1="select * from yonghu where 用户名='"&n1&"'and 密码='"&n2&"'"
set rs=server.createobject("adodb.recordset")
rs.open sq1,cn1,1,1
if cn1.eof then
response.write"<p align=center>出错提示:用户名不存在或用户名、密码不正确!</p>"
response.write"<p align=center><a href=index.asp>返回重新登陆</a></p>"
else
response.write"<p align=center>登陆成功!</a></p><br><br>"
response.write"<p align=center><a href=yonghu.asp>点击这里进入用户页</a></p>"
cn1.close
set cn1=nothing
end if
%>
</body>
</html>

[[it] 本帖最后由 过傻过天真 于 2008-7-16 23:13 编辑 [/it]]
22 回复
#2
hmhz2008-07-16 10:29
用户名='"&n1&"'and

and 前面要空一格

用户名='"&n1&"' and
#3
过傻过天真2008-07-16 12:08
还是不行
#4
kgdipbyve2008-07-16 17:11
cn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";
你这里多了个"&filepath"后面多了一个",你试试看这个删了.
还有一点就是数据库里的表名最好用英文的,用中文不大好!
#5
过傻过天真2008-07-16 20:59
[bo][un]kgdipbyve[/un] 在 2008-7-16 17:11 的发言:[/bo]

cn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";
你这里多了个"&filepath"后面多了一个",你试试看这个删了.
还有一点就是数据库里的表名最好用英文的,用中文不大好!


这应该没问题.那个双引号是和后面的内容连在一起的
#6
过傻过天真2008-07-16 21:01
是这一句有问题

rs.open sq1,cn1,1,1

不然就是这一句了

sq1="select * from yonghu where 用户名='"&n1&"'and 密码='"&n2&"'"
#7
multiple19022008-07-16 21:29
21行是这个

set rs=server.createobject("adodb.recordset")
#8
过傻过天真2008-07-16 23:12
end if后面的空行是我后来为了方便修改加上去的,发贴的时候忘记删除,真抱歉
#9
anlige2008-07-17 03:55
sq1="select * from yonghu where 用户名='"&n1&"' and 密码='"&n2&"'"
#10
过傻过天真2008-07-17 20:24
[bo][un]anlige[/un] 在 2008-7-17 03:55 的发言:[/bo]

sq1="select * from yonghu where 用户名='"&n1&"' and 密码='"&n2&"'"


Microsoft JET Database Engine 错误 '80040e07'

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

/123456789/dlchuli.asp,行 21
#11
yms1232008-07-17 20:32
字段最好用英文来命名,能减少莫名其妙的错误。
#12
multiple19022008-07-17 20:45
最讨厌看不标出错行的代码。
#13
过傻过天真2008-07-17 22:31
[bo][un]multiple1902[/un] 在 2008-7-17 20:45 的发言:[/bo]

最讨厌看不标出错行的代码。


真是抱歉啊,是这一行啦: rs.open sq1,cn1,1,1
#14
hmhz2008-07-18 11:34
把中文字段名都改成英文的试试
#15
过傻过天真2008-07-18 12:16
用英文也不行

Microsoft JET Database Engine 错误 '80040e07'

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

/123456789/dlchuli.asp,行 21
#16
multiple19022008-07-18 16:21
那俩字段是什么数据类型?
#17
过傻过天真2008-07-18 19:17
[bo][un]multiple1902[/un] 在 2008-7-18 16:21 的发言:[/bo]

那俩字段是什么数据类型?


用户名是文本,密码是数字
#18
multiple19022008-07-18 19:23
知道数字字段不需要单引号吗?

比如,这里有3个苹果,而不是这里有'3'个苹果。这个3在数轴上有对应点。

你叫'小明',这个'小明'是字符串,在数轴上没有对应点的字符串。
#19
过傻过天真2008-07-18 19:59
我改成这样sq1="select * from yonghu where user='"&n1&"' and mima="&n2
现在这一行好象可以了,不过第22行出错:

ADODB.Connection 错误 '800a0bb9'

参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。

/123456789/dlchuli.asp,行 22


第22行: if cn1.eof then
#20
multiple19022008-07-18 20:43
我估计是这样:Connection对象(就是那个cn1)没有eof这个属性,因为有了也没意义。有eof的是rs。
#21
yms1232008-07-18 20:43
if cn1.eof then
cn1是ADODB.Connection的类型
而Connection 对象是没有eof方法的这里要用
rs.eof
Connection只负责连接数据库或直接执行SQL语句
不负责数据记录的存储RecordSet才是数据存储,这两个绝对不能搞混淆。
#22
过傻过天真2008-07-18 20:51
哈哈哈,成功了,谢谢你们!谢谢各位!
#23
xiongjl95552008-07-18 23:31
问题所在
我以前经常出现类似的错误提示,一般来说如果说数据类型不匹配,多数要考虑数据库字段类型的设置,有可能你的密码是数字类型的,而你上面的写法表明密码是文本类型的,不知对否,另外对你书写的每一句可以用response.write 及response.end检验对否
1