VBscript和ADO - 3704关闭对象时不允许操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBscript和ADO - 3704关闭对象时不允许操作相关的知识,希望对你有一定的参考价值。

此函数将一行插入SQL数据库,并需要返回创建的标识号:

Function WriteDatabase(backupTypeID, numImages, folderSize, success, errorMessage, strLogFileName)

    On Error Resume Next
    err.clear
    Set objConnection = CreateObject("ADODB.Connection")
    Set objRecordSet = CreateObject("ADODB.Recordset")
    objConnection.Open "Provider=SQLOLEDB;Data Source=x.x.x.x;Initial Catalog=DB;User ID=sa;Password=xxxxxx"
    sqlquery = "INSERT INTO tblImageCopies (BackupCopyDate, BackupCopyTypeID, NumImages, ImagesFolderSize, Success, ErrorMessage) VALUES (GETDATE(), " & backupTypeID & ", " & numImages & ", " & folderSize & ", " & success & ", " & errorMessage & "); SELECT scope_identity() AS ImageCopyID;" 
    objRecordSet.Open sqlquery,objConnection
    objRecordSet.MoveFirst
    WriteDatabase = objRecordSet("ImageCopyID")
    objRecordSet.Close
    objConnection.Close
    If err.number <> 0 Then
        WriteLog "Error writing to the EHN database - " & err.number & " " & err.description, strLogFileName
    End If

End Function

它成功插入了行,但是我收到错误消息'3704当对象关闭时不允许操作。当它试图返回记录集中的标识号时。当我直接在服务器上执行此sql查询时,它可以工作。有人能帮忙吗?

答案

我做同样的事情(无论如何都非常相似)。我相信有两组结果会回来,一组用于INSERT,另一组用于SELECT。尝试调用objRecordSet.NextRecordset()。

另一答案

在查询开头使用“SET NOCOUNT ON;”

另一答案

我收到了确切的错误,并设法将其跟踪到我在SQL Server存储过程中留下的PRINT语句。一旦我评论了PRINT语句,Recordset就会返回结果而不会出错。

以上是关于VBscript和ADO - 3704关闭对象时不允许操作的主要内容,如果未能解决你的问题,请参考以下文章

vbscript:如何用ado查询csv并返回csv

vbscript ADO连接类

vbscript ADO RecordSet类

vbscript 获取ADO Recordset标头

vbscript 将ADO Recordset复制到2D阵列

vbscript 来自http://www.functionx.com/ado/Lesson07.htm