【问题标题】:VBscript and ADO - 3704 Operation is not allowed when the object is closedVBscript and ADO - 3704 对象关闭时不允许操作
【发布时间】:2009-11-10 23:56:52
【问题描述】:

这个函数在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 查询时,它可以工作。有谁能帮忙吗?

【问题讨论】:

    标签: sql database vbscript ado


    【解决方案1】:

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

    【讨论】:

    • 谢谢布赖恩。你能告诉我应该把objRecordSet.NextRecordSet()放在哪里吗?我已经尝试了几个地方,但仍然出错,我相信你在正确的轨道上。
    • 好的,我必须删除 objRecordset.MoveFirst 并用 Set objRecordSet2 = objRecordSet.NextRecordset() 替换它,然后将返回行更改为 WriteDatabase = objRecordSet2("ImageCopyID")。我还必须删除 objRecordset.Close。由于我的复合语句中的第一个语句没有返回任何行(它是一个 INSERT 语句),objRecordset 会自动关闭并且无法再次关闭,从而产生错误。
    • Helpful tips here 关于使用NextRecordset 以及如何识别打开的记录集。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我收到了确切的错误,并设法将其追溯到我留在 SQL Server 存储过程中的 PRINT 语句。一旦我注释了 PRINT 语句,Recordset 就会返回结果而没有错误。

      【讨论】:

        猜你喜欢
        • 2021-10-24
        • 2021-05-02
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-18
        相关资源
        最近更新 更多