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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.07.2005, 18:33   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Как работать с Table_ds.next()
Привет, всем.

Пишу изменение значения даты для строк журнала переноса ниже активной на выбранное дату в активной строке.

что-то типа:
PHP код:
    if (!freezeSetAllDialog)
    {
        
dialog = new DialogBox(DialogBoxType::YesNoBox,
                              
"Установить значение для всех последующих строк?",
                              
"Установка даты для строки","Установка даты для строки"DialogButton::Yes);

        if (
dialog.retval() == DialogButton::Yes)
        {
            
freezeSetAllDialog true;

            
inventJournalTransRecId InventJournalTrans.RecId;
            
value InventJournalTrans.TransDate;

            while(
inventJournalTrans_ds.next())
            {
                
inventJournalTransLocal inventJournalTrans_ds.cursor();
                
inventJournalTransLocal.TransDate value;
            }
            
inventJournalTrans_ds.findRecord(InventJournalTrans::findRecId(inventJournalTransRecId));
            
freezeSetAllDialog false;
        }
    } 
Так вот почему-то добавляется лишняя строка - новая.. Как этого можно избежать??
Старый 29.07.2005, 18:39   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Проверкой на RecId

С Уважением,
Георгий
Старый 29.07.2005, 18:47   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
да, я что-то подобное и сделал. Но очень это коряво:
PHP код:
            while(inventJournalTrans_ds.next())
            {
                
inventJournalTransLocal inventJournalTrans_ds.cursor();
                if (!
inventJournalTransLocal.RecId)
                {
                    
inventJournalTrans_ds.delete();
                    break;
                }
                
inventJournalTransLocal.TransDate value;
            } 
Строка все таки создается, и приходится ее удалять.
А это заметно очень.
(В смысле что она добавляется - это видно, потом исчезает, и потом еще и на активную строку перепрыгивает)
Старый 29.07.2005, 19:01   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Поставь свойство датасорса CreateIfEmpty в No
Старый 29.07.2005, 19:04   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, думал.
Только не insertIfEmpty, а insertAtEnd
Но пользователям нравится вниз стрелочку нажимать, чтобы строка добавлялась
Разве что - перед обработкой ее ставить, а после снимать. Но это изврат.

Но, разве оно не должно правильно работать и не создавать новую строку???
Старый 29.07.2005, 22:51   #6  
maximus is offline
maximus
Участник
 
153 / 10 (1) +
Регистрация: 16.03.2005
2kashperuk
Почему отладчик не используете? Вам он на что дан?

У Вас в цикле обновления записей и добавление еще одной.Новая запись всегда инициализируется, т.е. вызывается InitValue. Вот там и ставьте точку. Потом по стеку смотрите откуда вызывается. Это next(). Значит надо сделать так, чтобы он не вызывался лишний раз. Перепешите свой кусок, ну например, через while select.

Делов то...
Старый 30.07.2005, 00:33   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
2 maximus:
while select не кактит. Мне не все строки журнала нужны, а только ниже текущей. А сортировка может быть разной, и т.д. Нужно с датасорсом работать. getNext тоже каряво как-то работает

так и оставил, как было.
И таки меняю свойство на датасорсе insertAtEnd перед и после цикла while (_ds.next())
Старый 30.07.2005, 14:25   #8  
maximus is offline
maximus
Участник
 
153 / 10 (1) +
Регистрация: 16.03.2005
2kashperuk
Если долго мучится, что-нибудь получится... (C)


PHP код:
   inventjournaltrans inventJournalTransLocal;
   
int recid;
   ;

  
recid inventJournalTrans_ds.cursor().RecId;
  
inventJournalTrans_ds.last();
  while(
true)
{
   
inventJournalTransLocal inventJournalTrans_ds.cursor();
   
inventJournalTransLocal.TransDate value;

   if (
recid == inventJournalTransLocal.RecId)
   {
      
inventJournalTransLocal.update();
      break;
   }
  
inventJournalTrans_ds.prev();

PS транзакцию не забудьте
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: Microsoft - The Next Big ERP Innovator Blog bot DAX Blogs 2 02.04.2009 18:55
Ошибка while next niktata DAX: Программирование 11 20.02.2009 15:18
axStart: Please keep the AOT reports in Dynamics AX next release alive Blog bot DAX Blogs 2 13.12.2008 12:18
ProductiveGap: Analysis: CRM Is Microsoft's Next Billion-Dollar Baby Blog bot DAX Blogs 0 28.10.2006 18:14
next и временная таблица Dron AKA andy DAX: Программирование 3 24.04.2003 16:42

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

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

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