我试图打开一个记录集,以便我可以获得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
时会返回正确的结果集,但是我无法指定似乎使行计数属性有效的常量。
我如何使这项工作?
答案 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