Показать сообщение отдельно
Старый 21.01.2004, 18:52   #17  
Wamr_imported is offline
Wamr_imported
Участник
 
101 / 10 (1) +
Регистрация: 08.01.2004
Хочу исправить свою ошибку:
Код:
loops = 0;
while (queryRun.next()) 
{
  record = queryRun.getNo(1);
  ret += record.(RecId);
  loops++;
}
ret = (loops>1 ? loops : ret);
return ret;
Уточню, что под количество строк запроса я понимаю кол-во строк получаемых в результате запроса после всех фильтраций и агрегаций.

С задачей подсчета строк в запросе я сталкивался в 2х случаях:
- когда требовалось выводить какие-то агрегированные значения в форме с учетом фильтров пользователя и dynalink-ов c другими формами;
- для инициализация прогресса перед выполнением какого-то длительного процесса.
И в том, и в другом случаи важен не только результат, но и скорость. Т.е. простой перебор строк (читай countTotal) не подходит.
При наличии GROUP BY даже метод Максима приходит к перебору.
Простого способа посчитать строки с группировками НЕТ. Т.е. для таких вычислений надо искать какой-то обходной путь.

Если честно, то я почти никогда не использовал универсальный метод подсчета кол-ва строк в запросе, так как всегда старался сделать несколько вычислений (кол-ва, суммы..) за один проход
-----------------------

Паковать dynalink.
Не представляю себе, как можно корректно упаковать динамическую связь одного объекта (курсора) с другим объектом (запрос)? А как потом распаковать?