我一直收到这个错误:
ADODB.Recordset错误'800a0e78' 当时不允许操作 对象已关闭。
我正在使用的Asp代码:
rs.open "usp_reply_insert 132 ,N'abc',N'teeeeeeext',0,N'gest','x@x.com' ",conn
rs.close
问题在于rs.close命令
这是存储过程
ALTER PROCEDURE [dbo].[usp_reply_insert]
@maamar_id int,
@subject nvarchar(200),
@text nvarchar(max),
@userid int,
@name nvarchar(50),
@email nvarchar(150)
AS
begin
set nocount on
INSERT INTO dbo.tbl_reply
(maamar_id,
userid,
reply_subject,
reply_text,
reply_name,
reply_email,
reply_date,
reply_status
)
VALUES
(
@maamar_id,
@userid,
@subject,
@text,
@name,
@email,
getdate(),
0
)
end
如何关闭此已恢复的设置?
10倍
答案 0 :(得分:4)
来自Recordset.Open method上的MSDN文档:
使用它不是一个好主意 Open方法的源参数 执行不执行的操作查询 返回记录,因为没有 简单的方法来判断是否通话 成功了。记录集返回 这样的查询将被关闭。
要 执行不返回的查询 记录,例如SQL INSERT 声明,调用Execute方法 一个Command对象或Execute方法 取而代之的是Connection对象。
简而言之,您的rs.open调用不会导致打开记录集,因此rs.close
语句不起作用,应该删除。更好的是,遵循引用文本中给出的示例,因为不建议使用ADODB.Recordset来调用INSERT操作。
答案 1 :(得分:0)
您的recordset
已关闭,这就是为什么rs.close
方法不起作用的原因。
您可以使用下面的简单代码来检查记录集是打开还是关闭(如果state=1
它已打开,否则state=0
它已关闭)
Dim state As Long
state = rs.state
If state <> 0 Then
rs.close
set rs = Nothing
End If