Я пытаюсь открыть набор записей, чтобы получить точное значение для RecordCount
. У меня есть код, который успешно делает это, используя Recordset.Open
с константами adOpenStatic
и adLockReadOnly
. Однако, когда я использую следующий код.Невозможно изменить свойство ActiveConnection объекта Recordset
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: Невозможно изменить ActiveConnection свойство объекта Recordset, который содержит объект Command в качестве источника.
Приведенный выше код возвращает правильный набор результатов при использовании Command.Execute
, но затем я не могу указать константы, которые, как представляется, заставляют работать свойство count.
Как это сделать?
Эта страница: https://msdn.microsoft.com/en-us/library/ms675544(v=vs.85).aspx говорит следующее: _The свойство ActiveConnection является только для объектов Recordset, для свойства Source которого установлен допустимый объект Command, даже если объект Recordset не открыт. В нем также указано, что параметр 'activeconnection' не является обязательным. Короче говоря, попробуйте _not_ передать 'db' в' rsCr.open' вообще. –
Да, ваше предложение работает. Я думал, что попробовал это, не думаю! –
Ссылка также гласит: «Если вы передаете объект Command в аргументе Source и также передаете аргумент ActiveConnection, возникает ошибка. Свойство ActiveConnection объекта Command уже должно быть установлено на действительный объект Connection или строку соединения». –