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

[Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配怎么解决

airfei 发布于 2007-08-15 13:28, 8704 次点击
就是上面的问题,我实在不知道怎么解决了。

错误代码如下:
<%
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where Userid='"&Replace(request("userid"), "'", "''")&"'"
rs.open sql,conn,1,3 ------在这里报错。。。。我想可能是上面的SQL语句有错

userid=rs("userid")
password=rs("password")
name=rs("name")
email=rs("email")
nos=rs("nos")
send=rs("send")
money=rs("money")
adress=rs("adress")
sex=rs("sex")
Province=rs("Province")
city=rs("city")
dat=rs("date")
pay=rs("pay")
usercount=rs("usercount")
userip=rs("userip")
baoyue=rs("baoyue")
%>

请大家指点一下。谢谢
23 回复
#2
hmhz2007-08-15 13:34
rs.open sql,conn,1,3
后面的 3 改成 1
#3
madpbpl2007-08-15 13:53
userid=rs("userid") '这里加一句
userid=Replace(request("userid"), "'", "''")
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where Userid='" & userid & "'"
rs.open sql,conn,1,3
把上面改成这样再试试
#4
airfei2007-08-15 15:03

userid=rs("userid") '这里加一句,现在说这里类型不匹配
userid=Replace(request("userid"), "'", "''")
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where Userid='" & userid & "'"
rs.open sql,conn,1,3

帮帮忙!谢谢

#5
madpbpl2007-08-15 15:06

对不起,手误,打错了。
应该是
userid=rs("userid")
改成
userid=request("userid")

#6
airfei2007-08-15 15:11

你的意思是不是改成这样?
userid=request("userid")
userid=Replace(userid"'", "''")
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where Userid='" & userid & "'"
rs.open sql,conn,1,3

这样又报错说:标准表达式中数据类型不匹配。
说错误的是这句
rs.open sql,conn,1,3
但是我觉得错的应该是SQL语句,SQL语句错应该是变量userid错。你能帮我再看看吗?非常感谢!

#7
yms1232007-08-15 15:12
sql="select * from User where Userid='"&Replace(request("userid"), "'", "''")&"'"
楼主的userid里有单引号?报什么错误?
#8
airfei2007-08-15 15:14
标准表达式中数据类型不匹配
#9
airfei2007-08-15 15:20
我传递的userid是:
admin/useredit.asp?userid=351
就是打开useredit.asp
接收的时候
报错误:标准表达式中数据类型不匹配,说是这行rs.open sql,conn,1,3 有错!斑竹帮帮忙,谢谢
userid=request("userid")
userid=Replace(userid"'", "''")
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where Userid='" & userid & "'"
rs.open sql,conn,1,3
#10
QQQQQQQQQQQQ2007-08-15 15:23
sql="select * from User where Userid='"&Replace(request("userid"), "'", "''")&"'"

如果输入的是 '式式 它的结果就是
sql="select * from user where userid='''式式'"
我觉得这样不好

sql="select * from User where Userid='"&Replace(request("userid"), "'", "")&"'"
#11
yms1232007-08-15 15:26
以下是引用airfei在2007-8-15 15:20:38的发言:
我传递的userid是:
admin/useredit.asp?userid=351
就是打开useredit.asp
接收的时候
报错误:标准表达式中数据类型不匹配,说是这行rs.open sql,conn,1,3 有错!斑竹帮帮忙,谢谢
userid=request("userid")
userid=Replace(userid"'", "''")
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where Userid='" & userid & "'"
rs.open sql,conn,1,3

数字类型是不需要加单引号。

#12
QQQQQQQQQQQQ2007-08-15 15:26
sql="select * from User where Userid='"&amp;request("userid")

[此贴子已经被作者于2007-8-15 15:28:58编辑过]


#13
airfei2007-08-15 15:30
这样写
sql="select * from User where Userid='"&Replace(request("userid"), "'", "")&"'"
或者直接
sql="select * from User where Userid='"&request("userid")&"'"

都报标准表达式中数据类型不匹配,说是这行rs.open sql,conn,1,3 有错

#14
yms1232007-08-15 15:47
sql="select * from User where Userid="&request("userid")
这样呢?
#15
airfei2007-08-15 15:53

这样写报下列错误
sql="select * from User where Userid="&request("userid")

ADODB.Recordset 错误 '800a0cc1'

在对应所需名称或序数的集合中,未找到项目。

/vod/admin/useredit.asp,行 21

#16
airfei2007-08-15 15:57

这是全部代码,麻烦斑竹耐心看看,因为这个作业很急,非常感谢你!

<!--#include file="../../check.asp"-->
<!--#include file="articleconn.asp"-->
<%if session(flag)>1 then
response.write "<script>alert('您的操作权限不够!');history.back();</script>"
response.end
end if
%>
<%
dim rs
'userid=request("userid")
'userid=Replace(userid, "'", "")
dim sql
set rs=server.createobject("adodb.recordset")
'sql="select * from [User] where Userid='"& userid &"'"
sql="select * from User where Userid='"&request("userid")&"'"
rs.open sql,conn,1,
3

userid=rs("userid")
password=rs("password")
name=rs("name")
email=rs("email")
nos=rs("nos")
send=rs("send")
money=rs("money")
adress=rs("adress")
sex=rs("sex")
Province=rs("Province")
city=rs("city")
dat=rs("date")
pay=rs("pay")
usercount=rs("usercount")
userip=rs("userip")
baoyue=rs("baoyue")
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>会员个人信息</title>
</head>
<style type=text/css>
body { background:#336699; margin:0px; font:9pt 宋体; }
table { border:0px; }
td { font:normal 12px 宋体; }
img { vertical-align:bottom; border:0px; }
a { font:normal 12px 宋体; color:#000000; text-decoration:none; }
a:hover { color:#000000;text-decoration:underline; }
.sec_menu { border-left:1px solid white; border-right:1px solid white; border-bottom:1px solid white; overflow:hidden; background:#D6DFF7; }
.menu_title { }
.menu_title span { position:relative; top:2px; left:8px; color:#215DC6; font-weight:bold; }
.menu_title2 { }
.menu_title2 span { position:relative; top:2px; left:8px; color:#428EFF; font-weight:bold; }
</style>
<body >

<p> </p>
<form method="POST" action="userseve.asp?userid=<%=Replace(request("userid"), "'", "''")%>"> ---不知道和这里有关系没有
<div align="center">
<center>
<table border="0" cellpadding="4" cellspacing="0" width="74%" height="78" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<td width="100%" colspan="4" bgcolor="#FFFFFF" height="23" nowrap> <p align="center"><font size="2"><b><%=name%>个人详细资料</b></font></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="25" nowrap> <p align="center"><font size="2">用&nbsp;&nbsp;
户:</font></td>
<td width="32%" bgcolor="#FFFFFF" height="25" nowrap><font size="2">
<input type="text" name="userid" size="23" style="border-style: solid; border-width: 1" value="<%=userid%>">
</font></td>
<td width="13%" bgcolor="#FFFFFF" height="25" nowrap><font size="2">密&nbsp;&nbsp;&nbsp;
码:</font></td>
<td width="39%" bgcolor="#FFFFFF" height="25" nowrap><font size="2">
<input type="text" name="password" size="15" style="border-style: solid; border-width: 1" value="">
</font>不更改请保留空</td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="13" nowrap> <p align="center"><font size="2">真实性名:</font></td>
<td width="32%" bgcolor="#FFFFFF" height="13" nowrap><font size="2">
<input type="text" name="name" size="23" style="border-style: solid; border-width: 1" value="<%=name%>">
</font></td>
<td width="13%" bgcolor="#FFFFFF" height="13" nowrap><font size="2">邮&nbsp;&nbsp;&nbsp;
件:</font></td>
<td width="39%" bgcolor="#FFFFFF" height="13" nowrap><font size="2">
<input type="text" name="email" size="22" style="border-style: solid; border-width: 1" value="<%=email%>">
</font></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="12" nowrap> <p align="center"><font size="2">观看次数:</font></td>
<td width="32%" bgcolor="#FFFFFF" height="12" nowrap><font size="2">
<input type="text" name="nlook" size="23" style="border-style: solid; border-width: 1" value="<%=rs("nlook")%>">
</font></td>
<td width="13%" bgcolor="#FFFFFF" height="12" nowrap><font size="2">
激活时间:</font></td>
<td width="39%" bgcolor="#FFFFFF" height="12" nowrap> <input type="text" name="starlook" size="22" value="<%=rs("starlook")%>" style="border-style: solid; border-width: 1"></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="7" nowrap> <p align="center"><font size="2">登陆次数:</font></td>
<td width="32%" bgcolor="#FFFFFF" height="7" nowrap><font size="2">
<input type="text" name="nos" size="23" style="border-style: solid; border-width: 1" value="<%=nos%>">
</font></td>
<td width="13%" bgcolor="#FFFFFF" height="7" nowrap><font size="2">停使时间:</font></td>
<td width="39%" bgcolor="#FFFFFF" height="7" nowrap><font size="2">
<input type="text" name="money" size="22" style="border-style: solid; border-width: 1" value="<%=money%>">
</font></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="3" nowrap> <p align="center"><font size="2">付款状态:</font></td>
<td width="32%" bgcolor="#FFFFFF" height="3" nowrap><font size="2">
<input type="text" name="pay" size="23" style="border-style: solid; border-width: 1" value="<%=pay%>">
</font></td>
<td width="13%" bgcolor="#FFFFFF" height="3" nowrap>剩余点数:</td>
<td width="39%" bgcolor="#FFFFFF" height="3" nowrap><font size="2">
<input type="text" name="usercount" size="23" style="border-style: solid; border-width: 1" value="<%=usercount%>">
</font></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="3" nowrap> <p align="center"><font size="2">会员级别:</font></td>
<td width="32%" bgcolor="#FFFFFF" height="3" nowrap> <select size="1" name="oklookx">
<option value="0" <%if rs("oklook")=0 then%> selected <%end if%>>电影游客 </option>
<option value="1" <%if rs("oklook")=1 then%> selected <%end if%>>计点会员 </option>
<option value="2" <%if rs("oklook")=2 then%> selected <%end if%>>包月会员 </option>
<option value="3" <%if rs("oklook")=3 then%> selected <%end if%>>包季会员 </option>
<option value="4" <%if rs("oklook")=4 then%> selected <%end if%>>包年会员 </option>
<option value="5" <%if rs("oklook")=5 then%> selected <%end if%>>终生会员 </option>
</select></td>
<td width="13%" bgcolor="#FFFFFF" height="3" nowrap>是否包月:</td>
<td width="39%" bgcolor="#FFFFFF" height="3" nowrap><input type="text" name="baoyue" size="5" style="border-style: solid; border-width: 1" value="<%=baoyue%>">
0:计点 1:包月</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" height="1" nowrap><p align="center"><font size="2">密码问题:</font></td>
<td bgcolor="#FFFFFF" height="1" nowrap><font size="2">
<input type="text" name="city" size="23" style="border-style: solid; border-width: 1" value="<%=city%>">
</font></td>
<td bgcolor="#FFFFFF" height="1" nowrap><font size="2">答  案:</font></td>
<td bgcolor="#FFFFFF" height="1" nowrap><font size="2">
<input type="text" name="adress" size="23" style="border-style: solid; border-width: 1" value="<%=adress%>">
</font></td>
</tr>
<tr>
<td bgcolor="#FFFFFF" height="0" nowrap> <p align="center"><font size="2">联系 Q Q:</font></td>
<td bgcolor="#FFFFFF" height="0" nowrap> <input type="text" name="phone" size="23" style="border-style: solid; border-width: 1" value="<%=rs("phone")%>"></td>
<td bgcolor="#FFFFFF" height="1" nowrap> <p align="center"><font size="2">会 员 IP:</font></td>
<td bgcolor="#FFFFFF" height="1" nowrap> <%=userip%></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="0" nowrap> <p align="center"><font size="2">注册时间:</font></td>
<td width="84%" colspan="3" bgcolor="#FFFFFF" height="0" nowrap><%=dat%><font size="2">&nbsp;&nbsp;&nbsp;所得佣金:</font><input type="text" name="getmoney" size="6" value="<%=rs("getmoney")%>">&nbsp;&nbsp;&nbsp;<font size="2">代理会员:</font><%=rs("askmejoin")%></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="0" nowrap> <p align="center">推广成果:</td>
<%sql="select * from user where askmejoin='"&Replace(request("userid"), "'", "''")&"'"
set rsurl=server.createobject("adodb.recordset")
rsurl.open sql,conn,1,1
noer=rsurl.recordcount
rsurl.close
set rsurl=nothing
%>
<td width="84%" colspan="3" bgcolor="#FFFFFF" height="0" nowrap>你目前成功推广了<font color="#FF0000">(<%=noer%>)</font>位会员加入,其中付费人次<font color="#FF0000">(<%=rs("payno")%>)</font>次
,你得到了<font color="#FF0000">(<%=rs("getmoney")%>)</font>元代理佣金。</td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="9" nowrap> </td>
<td width="84%" colspan="3" bgcolor="#FFFFFF" height="9" nowrap> <input type="submit" value="更改" name="change">
<span lang="en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <input type="submit" value="清空佣金" name="payer"></td>
</tr>
<tr>
<td width="16%" bgcolor="#FFFFFF" height="9" nowrap> </td>
<td width="84%" colspan="3" bgcolor="#FFFFFF" height="9" nowrap> </td>
</tr>
</table>
</center>
</div>
</form>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>

</body>

</html>
</body>
</html>

#17
通缉犯2007-08-15 16:11
你数据库中与你所获得的数据的类型不同,比如你数据表中,userid为自动编号或数字,而你实际上从也面上request("userid")的值可能为文本或字符类型,把它转化为数字类型,userid=cint(request.("userid"))
#18
ayue2222007-08-15 16:12

1、检查数据库中是否有UserID字段.
2、数据库中的 UserID是什么类型的 ?是Int自动递增还是varchar字符型 ?
如果是Int类型,则
sql="select * from User where Userid="&Cint(request("userid"))
字符串类型:
sql="select * from User where Userid='"&request("userid")&"'"

#19
通缉犯2007-08-15 16:15
userid=rs("userid")
你这是把一个记录集赋给一个变量吗,那userid等于的就不是一个userid了,而是全部userid,错误的。
#20
airfei2007-08-15 16:25
请问
sql="select * from User where Userid="&Cint(request("userid"))

1。VB中大小写有没有区别?
2。我在数据库中的有UserID字段,是不是与上面的Userid是不同的?
3。我的UserID字段是长整型,自增。所以我用sql="select * from User where Userid="&Cint(request("userid")),但是还是报错:在对应所需名称或序数的集合中,未找到项目。
错在这行:name=rs("name")
#21
airfei2007-08-15 17:01
userid=rs("userid")
这句的意思是不是把数据库中的数据赋值给userid变量
#22
yms1232007-08-15 17:04
sql="select * from [User] where Userid="&request("userid")
这样试试
#23
通缉犯2007-08-15 17:11

用rs("name")之前,必须已经获得rs("name")的值,否则就成为了整个集合。其他应该也是,但你userid已经request.querystring("userid")从而已经从之前的页面或的了具体值,所以,userid已经是获得的具体的值了,而其他的比如rs("name")却并没有获得一个具体值,而是个记录集合。

#24
airfei2007-08-15 17:49

错误信息为;多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
<%@ LANGUAGE = VBScript.Encode %>
<!--#include file="articleconn.asp"-->
<!--#include file="../MD5/md5.asp" -->
<!--#include file="../../check.asp"-->
<%if session("flag")>1 then
response.write "<script>alert('您的操作权限不够!');history.back();</script>"
response.end
end if
%>

<%
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from User where UserID="&Cint(request("userid"))
rs.open sql,conn,1,3

if request("change")<>"" then
rs("UserID")=request("userid") --------报错的是这句
if Replace(request("password"), "'", "''")<>"" then
rs("Password")=md5(Replace(request("password"), "'", "''"))
end if
rs("Username")=request("myname")
rs("email")=request("email")
rs("oklook")=request("oklook")
rs("nos")=request("nos")
rs("send")=request("send")
rs("money")=request("money")
rs("Answer")=request("Answer")
rs("starlook")=request("starlook")
rs("nlook")=request("nlook")
rs("sex")=request("sex")
'rs("province")=request("province")
rs("Question")=request("Question")
rs("phone")=request("phone")
rs("pay")=request("pay")
rs("baoyue")=request("baoyue")
rs("getmoney")=request("getmoney")
rs("usercount")=request("usercount")
rs.update
else
rs("getmoney")="0"
rs.update
end if

rs.close
set rs=nothing
conn.close
set conn=nothing
response.redirect Request.ServerVariables("HTTP_REFERER")
%>
</body>
</html>

1