Одно простое решение - использовать метод SQL COUNT. Предполагается, что вам нужно количество строк, а не сами данные.
<%
Set rsscroll = Server.CreateObject("ADODB.Recordset")
Dim strSQLscroll, rsscroll, intRow
strSQLscroll = "SELECT COUNT(*) AS Total FROM tblItems WHERE expiration_date > getdate();"
rsscroll.open strSQLscroll, oConn
response.write rsscroll("Total")
rsscroll.close: set rsscroll = nothing
oConn.close: set oConn = nothing
%>
Возвращает одну строку с одним значением, называемым «Всего». (Продолжайте читать, если вам нужны данные о количестве строк и .)
Ваш код запроса использует RecordSet по умолчанию, который возвращает данные в режиме «только вперед» для эффективности. Он будет проходить построчно, но не знает фактического количества. (Этот режим также устанавливает для RecordSet.RecordCount значение -1, поэтому поле для вас бесполезно.)
Параметр RecordSet.Open «Тип курсора» позволяет переключиться в режим «Набор ключей» (значение параметра 1), который делает , чтобы установить в поле RecordCount количество строк данных. (Параметры «Тип блокировки» и «Тип команды» включены для полноты, но они не фигурируют в этом ответе.)
RecordsetObject.Open "TableName|SQLStatement", ConnectionObject [,Cursor Type] [,Lock Type] [,Command Type]
Добавьте этот параметр в вызов RecordSet.Open вашего кода, а затем проверьте RecordCount.
<%
Set rsscroll = Server.CreateObject("ADODB.Recordset")
Dim strSQLscroll, rsscroll, intRow
strSQLscroll = "SELECT * FROM tblItems where expiration_date > getdate() order by expiration_date desc;"
rsscroll.open strSQLscroll, oConn, 1
intRow = rsscroll.RecordCount
' ... do something with intRow
rsscroll.close: set rsscroll = nothing
oConn.close: set oConn = nothing
%>
Если производительность базы данных что-то значит для вашей ситуации, метод RecordSet.GetRows () гораздо эффективнее.
<%
Dim rsscroll, intRow, rsArray
Set oConn = CreateObject("ADODB.Connection")
oConn.open "<connection string>"
strSQLscroll = "SELECT * FROM tblItems where expiration_date > getdate() order by expiration_date desc"
Set rsscroll = conn.execute(strSQLscroll)
if not rsscroll.eof then
rsArray = rsscroll.GetRows()
intRow = UBound(rsArray, 2) + 1
response.write "rows returned: " & intRow
' ... do any other operations here ...
end if
rsscroll.close: set rsscroll = nothing
oConn.close: set oConn = nothing
%>