![]() |
#15 |
Заноза в заднице
|
Цитата:
Сообщение от Shoorik
Цитата:
Сообщение от Likefire
Цикл в данном случае очень непродуктивно, так как записей в таблице может быть очень много и пробегаться по каждой записи, чтобы найти последний элемент таблицы - мягко говоря неумно, потому что существует такой простой метод как COUNT.
RESET(Customer); //сбрасываем все фильтры = все записи таблицы IsCount := Customer.COUNT; Сustomer.SETRANGE("No.", No1, No2); //ставим фильтр = избранные записи IsCount := Customer.COUNT; Вот и вся любовь... Не понял идеи. При чём здесь COUNT? Искать последнюю запись с помощью цикла - далеко не лучшая идея, конечно :-) Но вопрос был не об этом - человеку, как я понял, нужно изменить значение поля во всех записях. В этом деле COUNT точно не поможет, там без цикла не обойтись. Для того, чтобы найти последнюю запись, на самом деле, существует такой простой метод как FIND('+') В примере кода, приведённом Вами я опять-таки не увидел поиска поска записи. RESET(Customer); //сбрасываем все фильтры = все записи таблицы IsCount := Customer.COUNT; Сustomer.SETRANGE("No.", No1, No2); //ставим фильтр = избранные записи IsCount := Customer.COUNT; Вы здесь дважды считаете количество записей. Первый раз - всего в такблице, второй - количество записей, удовлетворяющих фильтру. А где, собственно, поиск? Да,- я дважды считаю количество записей, но только для примера, чтобы было понятно, что при применении фильтров, инструкция COUNT передаёт различные значения... А насчёт бага навиженовского движка - справедливо, да и flowfield'ы типа SUM в больших таблицах встречаются достаточно часто. Про то, что умно, а что неумно - погорячился... И ещё: насчёт RESET... Конечно же нужно применять инструкцию не RESET(Customer), а Customer.RESET...
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|