Показать сообщение отдельно
Старый 05.03.2004, 11:10   #1  
Mystery is offline
Mystery
Участник
 
43 / 11 (1) +
Регистрация: 28.01.2004
Обновление данных в while select
У меня имеется некая таблица (PatternTable), в которой имеется поле статуса (Status) на основе перечисления и может принимать определенные значения. При изменении этого поля нужно остальным записям сменить это значение статуса. В общем мне нужно чтоб в таблице было много записей со статусом elDefault, одна запись со статусом elOk и много записей со статусом elClose. Если какая-то запись переводиться в статус elOk и уже есть в таблице иная запись с подобным статусом, ее нужно перевести в статус elClose и только потом перевести необходимую запись в статус elOk.

Проблема в том, что мой код не меняет статус записей. Я отлаживал под отладчиком и видел что реально статус меняется, но на форме не отображаются изменения. Мало того, если закрыть форму и открыть ее заново, то изменения тоже не появляются. Может где-то фечить нужно изменения, но я не могу понять как это делается в Аксапте.

Привожу пример кода:

PHP код:
void SetStatusOk()
{
    
int countPattern;
    
PatternTable patternTable// таблица шаблонов

    
if (this.Status==ptStatus::elOk) return;

    
countPattern = (select count(RecIDfrom PatternTable 
        where
((PatternTable.Status==ptStatus::elOk) && (PatternTable.ID!=this.ID))).RecID;
    if (
countPattern>0)
    {
        if (
box::yesNo('Сменить статус?'DialogButton::Yes)==DialogButton::Yes)
        {
          
ttsBegin;
          while 
select forupdate patternTable 
             where 
((patternTable.Status==ptStatus::elOk) && (patternTable.ID!=this.ID))
          {
            
patternTable.Status ptStatus::elClose
// меняю статус записям (!! НО статус не меняется в форме!!)
            
info(patternTable.ID);
          }
          
ttsCommit;
        }
        else
        {
            return;
        }
    }
    
this.Status ptStatus::elOk;