|
|
|
Supreme 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 (старая версия программы)
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| RecordCount будет работать только после того как сделаешь MoveLast. Так что либо сосчитать в цикле, либо выполнять дополнительный запрос "SELECT count(*) AS c FROM table1"
|
|
|
|
|
Supreme 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
Если кто-то сталкивался с такой проблемой или знает решение, то подскажите пожалуйста, а то в цикле больно долго считает
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| Напиши, что значит "старая БД", это какая? И напиши свою строку подключения к БД (а то у меня были недавно проблемы только из-за ее формата) и с какими параметрами окрываешь рекордсет, а то может ты его только "форвард" или как-то еще пытаешься открыть...
|
|
|
|
|
Supreme 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 (пишет ошибку: "Набор строк не поддерживает обратную передачу")
БД не пустая
|
|
|
|
|
Supreme Being
      
участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908,
Visits: 21 011
|
|
отвечаю сам себе :-)
http://www.aspfaq.com/faq/faqShow.asp?fid=24
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.04.2002 8:18
Сообщ.: 28,
Visits: 309
|
|
А может дело в
"Recordcount is not supported with the default forward-only cursor."
|
|
|
|
|
|
| |