Asp classic asp中的记录集和asp中的执行存储过程

Asp classic asp中的记录集和asp中的执行存储过程,asp-classic,ado,Asp Classic,Ado,我想从一个.asp页面打开另一个.asp页面。单击按钮上的.asp页面。下面是我已经完成的代码,但出现了错误 错误出现,原因是“对象关闭时不允许操作” 这是密码 Dim dbconn, objCmd, objParam, rs, EmailID, Password, connString, RecordCount connString = "Connectionstring" dbconn = Server.CreateObject("ADODB.Connection") dbco

我想从一个.asp页面打开另一个.asp页面。单击按钮上的.asp页面。下面是我已经完成的代码,但出现了错误

错误出现,原因是“对象关闭时不允许操作”

这是密码

 Dim dbconn, objCmd, objParam, rs, EmailID, Password, connString, RecordCount

 connString = "Connectionstring"

 dbconn = Server.CreateObject("ADODB.Connection")

 dbconn.Open(connString)

 rs = Server.CreateObject("ADODB.RecordSet")

 objCmd = Server.CreateObject("ADODB.Command")
 objCmd.ActiveConnection = dbconn
 objCmd.CommandText = "sp_Name"
 objCmd.CommandType = &H0004 
 objParam = objCmd.CreateParameter("@EmailID",200,1,"100",Session("EmailID"))
 objCmd.Parameters.Append(objParam)

  objParam = objCmd.CreateParameter("@Password",200,1,"100",Session("Password"))
  objCmd.Parameters.Append(objParam)

   rs = objCmd.Execute(Session("EmailID"),Session("Password"))

   do while not rs.eof ------->here comes error 

    EmailID = rs(0)
    Password =  rs(1)
    'response.Write EmailID & "," & Password & "<br">
    rs.MoveNext
loop
Dim dbconn、objCmd、objParam、rs、EmailID、密码、connString、记录计数
connString=“Connectionstring”
dbconn=Server.CreateObject(“ADODB.Connection”)
dbconn.Open(连接字符串)
rs=Server.CreateObject(“ADODB.RecordSet”)
objCmd=Server.CreateObject(“ADODB.Command”)
objCmd.ActiveConnection=dbconn
objCmd.CommandText=“sp_名称”
objCmd.CommandType=&H0004
objParam=objCmd.CreateParameter(“@EmailID”,200,1,“100”,会话(“EmailID”))
objCmd.Parameters.Append(objParam)
objParam=objCmd.CreateParameter(“@Password”,200,1,“100”,会话(“Password”))
objCmd.Parameters.Append(objParam)
rs=objCmd.Execute(会话(“EmailID”)、会话(“密码”))
不要急着去做。错误来了
EmailID=rs(0)
密码=rs(1)
'response.Write EmailID&'、“&密码&”尝试使用以下代码

SET rs = objCmd.Execute(Session("EmailID"),Session("Password"))
在rs之前添加集合

这是我的建议

在我的例子中,Command.Execute()中的记录集对象不支持.BOF或EOF

所以,我使用RecordSet.Open方法来调用这样一个存储过程

Dim dbconn, objCmd, objParam, rs, EmailID, Password, connString, RecordCount
connString = "Connectionstring"
dbconn = Server.CreateObject("ADODB.Connection")
dbconn.Open(connString)

rs = Server.CreateObject("ADODB.RecordSet")

objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = dbconn
objCmd.CommandText = "sp_Name"
objCmd.CommandType = &H0004 
objParam = objCmd.CreateParameter("@EmailID",200,1,"100",Session("EmailID"))
objCmd.Parameters.Append(objParam)
objParam = objCmd.CreateParameter("@Password",200,1,"100",Session("Password"))
objCmd.Parameters.Append(objParam)

rs.Open objCmd, dbconn, 1, 1

do while not rs.eof ------->here comes error 
    EmailID = rs(0)
    Password =  rs(1)
    'response.Write EmailID & "," & Password & "<br">
    rs.MoveNext
loop
Dim dbconn、objCmd、objParam、rs、EmailID、密码、connString、记录计数
connString=“Connectionstring”
dbconn=Server.CreateObject(“ADODB.Connection”)
dbconn.Open(连接字符串)
rs=Server.CreateObject(“ADODB.RecordSet”)
objCmd=Server.CreateObject(“ADODB.Command”)
objCmd.ActiveConnection=dbconn
objCmd.CommandText=“sp_名称”
objCmd.CommandType=&H0004
objParam=objCmd.CreateParameter(“@EmailID”,200,1,“100”,会话(“EmailID”))
objCmd.Parameters.Append(objParam)
objParam=objCmd.CreateParameter(“@Password”,200,1,“100”,会话(“Password”))
objCmd.Parameters.Append(objParam)
rs.开放式objCmd,dbconn,1,1
不要急着去做。错误来了
EmailID=rs(0)
密码=rs(1)

'response.Write EmailID&'、“&Password&”抱歉,设置的代码已过时。我已经尝试过了,但它不起作用,显示错误为“'Let'和'SET'赋值语句不再受支持。”@jayu,vbscript中需要设置才能将任何对象赋值给变量。记录集是一个对象,ADODB连接也是一个对象,所以在分配记录集或连接的所有语句之前都需要SET。事实上,最好的做法是在处理完对象后使用Set obj=Nothing从内存中清除对象看起来dbconn从未打开过。。。尝试调试并查看其状态。。。可能您的connString有问题?请尝试在出现错误的行之前添加
Set rs=rs.NextRecordset
。如果没有记录,则应使用if not rs.eof环绕do循环,然后使用do而不是rs.eof循环结束。