Показать сообщение отдельно
Старый 01.03.2011, 10:34   #4  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от LOGIC Посмотреть сообщение
Уважаемые коллеги,
Поясните следующее, имеем в первоисточнике:
Цитата:
Ok := Record.FINDFIRST
Finds the first record in a table based on the current key and filter.
This function should be used instead of FIND('-') when you only need the first record.

You should only use this function when you explicitly want to find the first record in a table or set. Do not use this function in combination with REPEAT..UNTIL.
Теперь перевод:
Цитата:
Ok := Record.FINDFIRST
Используется для нахождения первой записи в таблице, основанной на текущем ключе и фильтре. Эта функция должна использоваться вместо FIND('-'), когда вам нужна только первая запись. Не используйте функцию совместно с REPEAT..UNTIL.
Непонятна фраза «Не используйте функцию совместно с REPEAT..UNTIL.» , Не использовать только когда нам нужна первая запись ИЛИ с функцией FINDFIRST не использовать, в общем?
Это значит, что функция должна использоваться для поиска одной (первой) записи из набора. Если вам нужно перебрать все записи в цикле, то предпочтительней использовать FIND('-'):

Function ...
Rec.SETFILTER(...)
IF Rec.FINDFIRST THEN
EXIT(Rec.DecField)
else
EXIT(0);

Но
Function ...
Rec.SETFILTER(...)
IF Rec.FIND('-') THEN REPEAT
Ttl += Rec.DecField;
UNTIL Rec.NEXT = 0;
EXIT(Ttl);