RecordSet.RecordCount = -1
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



RecordSet.RecordCount = -1 Expand / Collapse
Автор
Сообщение
06.12.2000 10:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908, Visits: 21 011
Требуется подсчитать количество записей после выполнения запроса, а RecordCount -1 возвращает, приходится в цикле считать
while not rs.eof
count=count+1
rs.movenext
wend
Подскажите как быть, база - Access (старая версия программы)
Сообщ. #702211
06.12.2000 11:16
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
RecordCount будет работать только после того как сделаешь MoveLast. Так что либо сосчитать в цикле, либо выполнять дополнительный запрос "SELECT count(*) AS c FROM table1"
Сообщ. #702212
06.12.2000 11:56
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908, Visits: 21 011
Дело не в этом, при попытке узнать кол-во записей с помощью MoveLast (например rs.MoveLast;count=rs.Absoluteposition) он ругается (при выполнении MoveLast) "Набор строк не поддерживает обратную передачу", пробовал еще так: set rs=DBConnection.execute("Select и т.п...",count). По идее после этого в переменной count должно храниться количество найденных записей, а у меня и тут "count=-1". Мне кажется, что дело в старой версии Access, или вообще ADO как-то криво работает с базами Access. Например, запрос "select count(distinct column_name) as i from table_name" прекрасно работает с SQL Server и ни в какую с Access, в Access можно только "select count(*) as i from table_name". Кстати из-за этого мне и понадобилось RecordCount, типа
set rs=Con.execute("select distinct c_name from t_name")
count=rs.RecordCount
Если кто-то сталкивался с такой проблемой или знает решение, то подскажите пожалуйста, а то в цикле больно долго считает
Сообщ. #702213
06.12.2000 12:02
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
Напиши, что значит "старая БД", это какая? И напиши свою строку подключения к БД (а то у меня были недавно проблемы только из-за ее формата) и с какими параметрами окрываешь рекордсет, а то может ты его только "форвард" или как-то еще пытаешься открыть...
Сообщ. #702214
06.12.2000 12:12
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908, Visits: 21 011
БД сделана в программе Access 2.0
Я сделал системный DSN (в ODBC), выбрал базу .mdb, дал название - остальное по умолчанию
Соединение:
set Connection=server.createObject("ADODB.Connection")
Connection.open("имя_моей_DSN")
Рекордсет:
set rs=server.createObject("ADODB.Recordset")
set rs=Connection.execute("select distinct type_list from list_table")
--=--
count=rs.recordCount (возвращает -1)
--=--
rs.moveLast (пишет ошибку: "Набор строк не поддерживает обратную передачу")

БД не пустая
Сообщ. #702215
06.12.2000 12:29
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908, Visits: 21 011
отвечаю сам себе :-)
http://www.aspfaq.com/faq/faqShow.asp?fid=24
Сообщ. #702216
06.12.2000 12:39
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
Спасибо! :)
Сообщ. #702217
03.01.2001 15:53
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 30.04.2002 8:18
Сообщ.: 28, Visits: 309
А может дело в
"Recordcount is not supported with the default forward-only cursor."
Сообщ. #702748
04.01.2001 17:51