Показать сообщение отдельно
Старый 06.03.2007, 15:58   #5  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Цитата:
Сообщение от Neovision Посмотреть сообщение
А вы фильтруете по тем полям, по которым рассчитываете калкфилд? Если да, то по-моему следует сперва определить значения в этих полях с помощью калкфилда, а потом уже после наложения фильтра запускать цикл. Могу ошибаться, но мне кажется, что до вызова CALCFIELDS значения в этом поле пустые, стало быть и фильтр SETRANGE по этому полю вернёт вам пустую запись, и выражение IF FIND('-') ... возвратит FALSE. Сделайте так:

Record.CALCFIELDS(Field1,Field2,...);
Record.SETRANGE(Field1,Value1,Value2) (или как там у вас)
IF Record.FIND('-')
THEN REPEAT

{тело цикла}

UNTIL Record.NEXT=0;
Если на на FlowField наложен фильтр то его значение вычисляется автоматически

Цитата:
Как я понимаю, 2-й - медленее 1-го, но в первом не получается расчитать вычисляемое поле (не срабатывает CALCFIELDS) - нули.
unalexia, первый метод не работает, т.к. в момент когда вы вызываете CALCFIELD запись еще не спозиционирована (т.е. не определены ключевые поля).
После FIND('-') запись позиционируется и CALCFIELD работает.

Первый способ однозначно не подходит.