无法更改Recordset对象的ActiveConnection属性

时间:2016-10-31 00:13:18

标签: vbscript asp-classic ado

我试图打开一个记录集,以便我可以获得RecordCount的准确值。我有一些代码可以通过Recordset.Open使用adOpenStaticadLockReadOnly常量来成功执行此操作。但是,当我使用以下代码时。

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时会返回正确的结果集,但是我无法指定似乎使行计数属性有效的常量。

我如何使这项工作?

1 个答案:

答案 0 :(得分:2)

以下是Open Method (ADO Recordset)的一些观点:

  

对于其Source属性设置为有效Command对象的Recordset对象,ActiveConnection属性是只读的,即使Recordset对象未打开也是如此。

  

activeconnection参数是可选的。

  

如果在Source参数中传递Command对象并传递ActiveConnection参数,则会发生错误。必须已将Command对象的ActiveConnection属性设置为有效的Connection对象或连接字符串

简而言之,请尽量不要将db传递给rsCr.open

这样的事情:

rsCr.Open cmd, , adOpenStatic, adLockReadOnly