AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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;


Старый 05.03.2004, 11:14   #2  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
1. У вас пропущен patternTable.update().
2. Такие вещи надо бы выносить в классы чтобы выполнялось на сервере.
__________________
С уважением, Игорь Ласийчук.
Старый 05.03.2004, 11:25   #3  
Mystery is offline
Mystery
Участник
 
43 / 11 (1) +
Регистрация: 28.01.2004
Спасибо, помогло.

Возникла однако иная проблема, на форме обновляется только та запись для которой выполнялось действие. Остальные записи, которые подверглись сменуц статуса отображаются с преждним статусом, однако если закрыть и открыть форму, она покажет правильные значения. Как обновить форму для изменившихся записей?
Старый 05.03.2004, 11:37   #4  
NeveB is offline
NeveB
Участник
 
60 / 16 (1) ++
Регистрация: 14.11.2003
Адрес: Mosсow
Datasource.refresh();
где Datasource - название датасурса формы.
Старый 05.03.2004, 11:41   #5  
Mystery is offline
Mystery
Участник
 
43 / 11 (1) +
Регистрация: 28.01.2004
На форме следующая обработка:

PHP код:
void clicked()
{
    
super();
    
PatternTable.SetStatusOk();
    
PatternTable.update();
    
PatternTable_DS.reread();
    
PatternTable_DS.refresh();

которая обновляет только выделенную запись, ка обновить весь датасет и форму?
Старый 05.03.2004, 12:14   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
DS.research() - обновит все записи и установит курсор на первую.
Старый 05.03.2004, 12:19   #7  
Mystery is offline
Mystery
Участник
 
43 / 11 (1) +
Регистрация: 28.01.2004
Как потом перейти к нужной записи?
Старый 05.03.2004, 12:27   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Это уже было на форуме
PHP код:
MyTable  _myTable;
;

_myTable.data(MyTable);
MyTable_DS.research();
MyTable_DS.findRecord(_myTable); 
Старый 05.03.2004, 12:39   #9  
Mystery is offline
Mystery
Участник
 
43 / 11 (1) +
Регистрация: 28.01.2004
Спасибо
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Обновление данных на форме Protey DAX: Программирование 11 01.12.2006 16:05
Обновление данных в View rrkrivov DAX: Программирование 5 08.04.2005 20:56
обновление данных andreynikolai DAX: Программирование 3 04.12.2003 11:52
Обновление данных в гриде Dimitry DAX: Программирование 2 16.07.2003 12:54

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:15.