买了迪拜豪宅有绿卡吗:一段很短的asp代码,哪错了??? :(

来源:百度文库 编辑:中科新闻网 时间:2024/05/09 18:20:35
<!--#include file="dbconn.asp"-->
<% response.Flush()%>
<% dim name,pwd,sex
name=request("name")
pwd=request("pwd")
sex=request("sex")
dim rs
set rs=getrecordset("test.mdb", "test1")
rs.open "Select * From test1 Where name='" & name & "'",conn,3,1
'判断该用户是否已经注册
if not rs.eof then
%>
<script language="javascript">
alert("该用户已经注册!");
history.go(-1);
</script>
<%
response.end
%>
<% else
rs.addnew array("sex", "name", "pwd"), array(sex, name, pwd)
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
response.Write("恭喜你注册成功")
end if
%>

它提示的错误是这样的
“对象打开时,不允许操作”
这是为什么呢

呵呵,是这样的,你的,就是这句:
set rs=getrecordset("test.mdb", "test1")
和下面这句是冲突的:
rs.open "Select * From test1 Where name='" & name & "'",conn,3,1

为什么呢,因为GetRecordset是你定义在dbconn.asp里的一个函数,如果我没猜错,这个函数大致是这样的:

Function GetRecordset(FileName,TableName)
’使用ASP的Connection 对象打开数据库
Set objConn=Server.CreateObject("ADODB.Connection") objConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=" & Server.MapPath("Filename")
objConn.Open
’读取表的记录,然后存放在Record set对象"objRS"
Dim objRS
Set objRS=Server.CreateObject("ADODB.Recordset")
ObjRS.Open TableName,objConn,adOpenKeyset,adLockOptimistic,adCmdTable
End Function

可以看到函数的最后一句ObjRS.Open已经执行了open,而你的下一句又要执行OPEN,所以才会出错.

你的提问里没有要求给出解决方法,不过还是给你个小小的提示吧:
你可以自己写一个OPENCONN这样的函数到你的DBCONN.ASP里去,这样用起来比较方便.[看你的习惯是这样的.]

用别人的函数的时候最好能弄明白他的函数到底实现了什么功能.