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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.07.2009, 16:38   #1  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Как отработает запрос?
Здравствуйте, подскажите пожалуйста, как отработает запрос:
X++:
        while select forupdate custVendSettlement
        where custVendSettlement.TransDate > postingDate
            && custVendSettlement.SettleAmountCur
            && custVendSettlement.CanBeReversed
          join custVendTrans
            where custVendTrans.RecId == custVendSettlement.TransRecId
                && custVendTrans.TransDate <= postingDate
         {
                // custVendTransReg.reread();
 
                 select forupdate custVendTransReg
                 where custVendTransReg.RecId    == custVendTrans.RecId   &&
                  custVendTransReg.TableId  == custVendTrans.TableId;
 
                 custVendTransReg.LastExchAdj = postingDate;
                 custVendTransReg.update();
         }
Если к одному CustTrans приджойнено два CustSettlement, при втором прохождении что будет в поле LastExchAdj? Дело в том что на рабочей судя по всему произошло перечтение записи(как будто отработал reread), тогда как в дебугере и просто на тесте перечтения не происходит. Спасибо!
Старый 20.07.2009, 19:14   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от VORP Посмотреть сообщение
Здравствуйте, подскажите пожалуйста, как отработает запрос:
X++:
        while select forupdate custVendSettlement
        where custVendSettlement.TransDate > postingDate
            && custVendSettlement.SettleAmountCur
            && custVendSettlement.CanBeReversed
          join custVendTrans
            where custVendTrans.RecId == custVendSettlement.TransRecId
                && custVendTrans.TransDate <= postingDate
         {
                // custVendTransReg.reread();
 
                 select forupdate custVendTransReg
                 where custVendTransReg.RecId    == custVendTrans.RecId   &&
                  custVendTransReg.TableId  == custVendTrans.TableId;
 
                 custVendTransReg.LastExchAdj = postingDate;
                 custVendTransReg.update();
         }
Если к одному CustTrans приджойнено два CustSettlement, при втором прохождении что будет в поле LastExchAdj? Дело в том что на рабочей судя по всему произошло перечтение записи(как будто отработал reread), тогда как в дебугере и просто на тесте перечтения не происходит. Спасибо!
Либо вы непонятно изъясняетесь, либо "при втором прохождении" ещё раз выполнится запрос "select forupdate custVendTransReg", т.е. по сути (смыслу) это и будет reread()...
Да и зачем 2 раза апдэйтить одну и ту же строчку?
перепишите тогда уже запрос с группировкой или с exists join для custVendSettlement...
__________________
Zhirenkov Vitaly
Старый 21.07.2009, 10:55   #3  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Да извиняюсь, там должен был быть не CustvendTransReg.reread() а custVendTrans.reread().
То есть перечитывается custVendTrans, причём иногда. Код из custVendExchAdjTrans.update() и exchAdjustSettlement().
Переделал на вложенные циклы, в первом custVendTrans и exists join на CustVendSettlement, во втором просто custVendSettlement. Теперь больше перечитываться вроде не должен. Спасибо большое!
Теги
join, query, запрос (query)

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
передача параметров в запрос while select tolstjak DAX: Программирование 13 15.02.2009 19:39
Как собрать запрос? moid DAX: Программирование 11 02.07.2007 12:07
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Долго отрабатывает запрос по таблице InventItemLocation AlexeyBP DAX: Администрирование 1 30.05.2007 17:33
Не работает запрос на нескольких компаниях Bega DAX: Программирование 3 16.09.2005 10:21

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

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

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