gpt4 book ai didi

sql-server - ADODB 打开记录集失败/"Operation is not allowed when object is closed"

转载 作者:行者123 更新时间:2023-12-02 11:58:08 25 4
gpt4 key购买 nike

我在 Excel 中有以下 UDF,它使用 ADO 连接到我的 MSSQL 服务器。在那里它应该执行标量 udf“D100601RVDATABearingAllow”。

由于某种原因,我尝试附加的参数没有发送到 SQL Server。仅在服务器上:

SELECT dbo.D100601RVDATABearingAllow

到达。

我的 EXCEL UDF:

   Function RVDATA(Fastener) As Long

Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim Cmd1 As ADODB.Command
Dim stSQL As String

Const stADO As String = "Provider=SQLOLEDB.1;Data ................"
'----------------------------------------------------------
Set cnt = New ADODB.Connection
With cnt
.ConnectionTimeout = 3
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 3
End With
'----------------------------------------------------------
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = cnt
Cmd1.CommandText = "dbo.D100601RVDATABearingAllow"
Cmd1.CommandType = adCmdStoredProc
'----------------------------------------------------------
Set Param1 = Cmd1.CreateParameter("Fastener", adInteger, adParamInput, 5)
Param1.Value = Fastener
Cmd1.Parameters.Append Param1
Set Param1 = Nothing
'----------------------------------------------------------
Set rst = Cmd1.Execute()
RVDATA = rst.Fields(0).Value
'----------------------------------------------------------
rst.Close
cnt.Close
Set rst = Nothing
Set cnt = Nothing
'----------------------------------------------------------
End Function

当我使用 adCmdStoredProc 时,整个事情都会失败,并且在 vba 调试器中,记录集的属性有很多“对象关闭时不允许操作”(听起来可能有点不同,该消息已翻译)

当我不使用 adCmdStoredProc 时,我收到一条消息:变量紧固件未提供

我认为我打开记录集的方式可能有问题。在其他步骤中,我读到了有关使用“SET NOCOUNT ON”选项的信息,但这也不起作用。

有人有想法吗?问候伦比

最佳答案

也遇到了这个错误(在我的例子中,我使用存储过程来检索一些信息)。我做了一些更改,导致执行故障。

当我将 SET NOCOUNT ON 作为存储过程的第一个语句时,错误消失了。

关于sql-server - ADODB 打开记录集失败/"Operation is not allowed when object is closed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com