2016-10-31 9 views
0

Я пытаюсь открыть набор записей, чтобы получить точное значение для 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.

Как это сделать?

+3

Эта страница: https://msdn.microsoft.com/en-us/library/ms675544(v=vs.85).aspx говорит следующее: _The свойство ActiveConnection является только для объектов Recordset, для свойства Source которого установлен допустимый объект Command, даже если объект Recordset не открыт. В нем также указано, что параметр 'activeconnection' не является обязательным. Короче говоря, попробуйте _not_ передать 'db' в' rsCr.open' вообще. –

+1

Да, ваше предложение работает. Я думал, что попробовал это, не думаю! –

+1

Ссылка также гласит: «Если вы передаете объект Command в аргументе Source и также передаете аргумент ActiveConnection, возникает ошибка. Свойство ActiveConnection объекта Command уже должно быть установлено на действительный объект Connection или строку соединения». –

ответ

1

Вот некоторые моменты из Open Method (ADO Recordset):

Свойство ActiveConnection для чтения только для объектов Recordset, свойство Источник установлено значение действительного объекта Command, даже если объект Recordset не открыт.

и

ActiveConnection параметр является необязательным.

также

Если передать объект Command в исходном аргументе, а также передать ActiveConnection аргумент, то возникает ошибка. ActiveConnection свойство объекта Command должен быть уже установлен допустимый объект Connection или строки подключения

Короче говоря, стараюсь не проходя db в rsCr.open вообще.

Что-то вроде этого:

rsCr.Open cmd, , adOpenStatic, adLockReadOnly