не может закрыть набор записей в asp & sql server - PullRequest
0 голосов
/ 20 декабря 2010

Я получаю эту ошибку:

Ошибка 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

Как закрыть этот записанный набор?

10x

Ответы [ 2 ]

4 голосов
/ 20 декабря 2010

Из документации MSDN по методу Recordset.Open :

Не рекомендуется использовать аргумент Source метода Open для выполнения запроса действия, которыйне возвращает записи, потому что нет простого способа определить, был ли вызов успешным.Набор записей, возвращенный таким запросом, будет закрыт.

Чтобы выполнить запрос, который не возвращает записи, например оператор SQL INSERT, вместо этого вызовите метод Execute объекта Command или метод Execute объекта Connection.

Короче говоря, ваш вызов rs.open не приводит к открытому набору записей, поэтому оператор rs.close не работает и должен быть удален.Еще лучше, следуйте примеру, приведенному в цитируемом тексте, так как использование ADODB.Recordset для вызова операции INSERT не рекомендуется.

0 голосов
/ 19 марта 2015

Ваш recordset закрыт, поэтому метод rs.close не работает.Вы можете использовать этот простой код ниже, чтобы проверить, открыт ли или закрыт набор записей (если state=1 открыт, в противном случае state=0 закрыт) * ​​1005 *

Dim state As Long
state = rs.state
If state <> 0 Then
rs.close
set rs = Nothing
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...