Показать сообщение отдельно
Старый 12.01.2007, 14:58   #1  
PavelX is offline
PavelX
MCTS
MCBMSS
 
46 / 97 (4) ++++
Регистрация: 08.09.2006
Адрес: Красноярск
Цикл, ttsabort и continue
Всем привет!

Столкнулся с такой проблемой (может она обсуждалась уже, но я что то не нашел). Выбираю в цикле while select записи таблицы ProjTable. Там же в цикле после проверки некоторого условия откатываю транзакцию и хочу перейти на следующую строку ProjTable в цикле. Но после вызова continue следующая строка не выбирается. То есть цикл как и положено проходит снова, но курсор ProjTable указывает на ту же самую запись, что и при первом проходе.

Для наглядности написал джоб который описывает данную ситуацию. Причем если цикл дополнить условием по projId (while select projT where projT.projId == "ИД_Проекта"), то continue работает нормально.



X++:
static void Test_TTS_Continue(Args _args)
{
    ProjTable               projT;
    int i = 0;
    ;
    ttsbegin;
while select projT 
//    while select projT where projT.projId == "ИД_Проекта"
    {
        info(int2str(i) + ',    projId = ' + projT.ProjId);
        i++;
        if (i>100)
            return;
        ttsabort;
        ttsbegin;
        continue;
    }
    ttscommit;
}
Что это? Глюк или я чего то не понимаю и так задумано? Если кто сталкивался или хотя бы знает как это обойти, поделитесь пожалуйста.

Заранее благодарен.

Последний раз редактировалось PavelX; 12.01.2007 в 15:01.