05.02.2007, 12:32 | #1 |
Участник
|
Здравствуйте, уважаемые!
Хотелось бы узнать, есть ли в Навижн аналог Break для цикла Repeat..Until или While..Do. Т.е. вопрос: как принудительно выйти из цикла? Спасибо. |
|
05.02.2007, 12:43 | #2 |
NavAx
|
Выполнить условие окончания цикла?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
05.02.2007, 13:08 | #3 |
Участник
|
если код выполняется в триггере отчета OnAfterGetRecord, то можно использовать CurrDataItem.BREAK;
в остальных случаях можно использовать что-то типа этого: Код: IF lr_Customer.FIND('-') THEN REPEAT //что-то делаем и анализируем критерии для прерывания цикла lb_Break := (.......); UNTIL (lr_Customer.NEXT = 0) OR lb_Break; |
|
05.02.2007, 14:34 | #4 |
Участник
|
Ситуация-перебор записей в дата айтеме, и currreport.break как раз нельзя использовать
Видимо, придется делать так, как посоветовал OntheJump, -заводить lb_Break. Спасибо за ответы. |
|
05.02.2007, 16:07 | #5 |
Участник
|
почему currreport.Break нельзя использовать?
вот это вполне рабочий код: Код: DataItem - OnAfterGetRecord: lr_Integer.SETRANGE(Number, 0, 100); IF lr_Integer.FIND('-') THEN REPEAT IF lr_Integer.Number = 5 THEN CurrReport.BREAK; MESSAGE(FORMAT(lr_Integer.Number)); UNTIL lr_Integer.NEXT = 0; |
|
05.02.2007, 16:26 | #6 |
Участник
|
Кажется оно брейкнет не только текущий датаитем, а весь репорт
|
|
05.02.2007, 16:31 | #7 |
Участник
|
Ребят, вы чего?
OntheJump прав. читайте хэлп: " BREAK (Dataport, Report, XMLport) When used inside a loop - such as a WHILE..DO or REPEAT..UNTIL construction - BREAK causes the execution of the loop to end, and control will return to the statement that immediately follows the loop. When used outside a loop, BREAK causes the execution of the current trigger to end." |
|
05.02.2007, 17:24 | #8 |
Участник
|
Это мелочи
|
|