【发布时间】:2016-10-31 00:13:17
【问题描述】:
我正在尝试打开一个记录集,以便获得RecordCount 的准确值。我有一些代码通过使用Recordset.Open 和adOpenStatic 和adLockReadOnly 常量成功地做到了这一点。但是,当我使用以下代码时。
With cmd
.ActiveConnection = db
.CommandType = adCmdStoredProc
.CommandText = "doGetBookingCrewDetails"
.Parameters.Append .CreateParameter("@bookingid", adInteger, adParamInput)
.Parameters("@bookingid") = 42943
.Parameters.Append .CreateParameter("@starttime", adDBTimeStamp, adParamInput)
.Parameters("@starttime") = "07/10/2016 00:00"
End With
Set rsCr = Server.CreateObject("ADODB.Recordset")
rsCr.Open cmd, db, adOpenStatic, adLockReadOnly
我得到了错误
0x800a0e7b - ADODB.Recordset:无法更改以 Command 对象为源的 Recordset 对象的 ActiveConnection 属性。
上面的代码在使用Command.Execute 时返回了正确的结果集,但是我无法指定似乎使行计数属性起作用的常量。
我该如何进行这项工作?
【问题讨论】:
-
此页面:msdn.microsoft.com/en-us/library/ms675544(v=vs.85).aspx 说明:对于 Source 属性设置为有效 Command 对象的 Recordset 对象,ActiveConnection 属性是只读的,即使 Recordset 对象未打开也是如此。 它还说
activeconnection参数是可选的。所以简而言之,尝试不将db传递给rsCr.open。 -
是的,您的建议有效。我以为我真的试过了,你猜不是!
-
该链接还说,“如果您在 Source 参数中传递一个 Command 对象并同时传递一个 ActiveConnection 参数,则会发生错误。Command 对象的 ActiveConnection 属性必须已经设置为有效的 Connection对象或连接字符串。”
-
感谢您返回解决方案。为什么不将其添加为答案并接受它。
-
我想我会给你机会来夺取荣耀。它是您的解决方案。
标签: vbscript asp-classic ado