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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.07.2006, 11:30   #1  
cherv is offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Регистрация: 24.05.2006
Вопрос по update_recordset
Добрый день!
Подскажите, правильно ли я понимаю, что конструкция команы update_recordset не подразумевает выборки значения, которое нужно присвоить в результате команды?
Т.е., ситуация: есть две связанные таблицы, чтобы обновить поле Таблицы1, присвоив значение из Таблицы2, необходимо сделать цикл по записям Таблицы2 и уже в цикле делать update_recordset по условию связующих полей?
Заранее спасисбо!
Старый 14.07.2006, 11:48   #2  
Gad is offline
Gad
Участник
 
136 / 18 (1) ++
Регистрация: 21.05.2003
Адрес: Москва
Пример из руковводства разработчика:
Код:
UPDATE_RECORDSET myTable 

SETTING field1 = 1, 

field2 = fieldX + fieldY 

WHERE field1 == 0;
Updates the table myTable in all records where field1 has the value 0. field1 is given the new value 1, and field2 is assigned the value of the sum of fieldX and fieldY.
This example updates multiple fields at once, limit using a where clause, and use other fields in the assignments.

Таким образом, фишка данной команды именно в том, что цикл не нужен и производительность (при соблюдениии некоторых условий см. руководство разработчика) увеличивается.

Цикл нужен, если вы обрабатываете по одной записи командой update()

Последний раз редактировалось Gad; 14.07.2006 в 11:51.
Старый 14.07.2006, 12:09   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от cherv
Добрый день!
Подскажите, правильно ли я понимаю, что конструкция команы update_recordset не подразумевает выборки значения, которое нужно присвоить в результате команды?
Т.е., ситуация: есть две связанные таблицы, чтобы обновить поле Таблицы1, присвоив значение из Таблицы2, необходимо сделать цикл по записям Таблицы2 и уже в цикле делать update_recordset по условию связующих полей?
Заранее спасисбо!
Можно вот так:

Код:
static void Job4(Args _args)
{
    PurchLine purchLine;
    ;
    update_recordSet purchLine
    SETTING itemid = (select itemId from InventTable where InventTable.ItemId == purchLine.ItemId).itemId
    WHERE purchLine.purchId like '*0036';

}
Старый 14.07.2006, 12:43   #4  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от kashperuk
Можно вот так:

Код:
static void Job4(Args _args)
{
    PurchLine purchLine;
    ;
    update_recordSet purchLine
    SETTING itemid = (select itemId from InventTable where InventTable.ItemId == purchLine.ItemId).itemId
    WHERE purchLine.purchId like '*0036';

}
если я не ошибаюсь, то это будет равносильно
Код:
static void Job4(Args _args)
{
    PurchLine purchLine;
    ;
    update_recordSet purchLine
    SETTING itemid = ""
    WHERE purchLine.purchId like '*0036';
}
Так ли?
А по поводу вопроса автора, то я считаю, что т.к. join и outer join в команде update_recordset не применимы (по крайней мере в 3-ей версии), то обновить поле первой таблицы значением из второй можно либо через while select либо через connection. В последнем случае нужно знать чем такой подход отличается от while select
За это сообщение автора поблагодарили: kashperuk (1).
Старый 14.07.2006, 12:49   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Oops!
Действительно, не доглядел
Старый 14.07.2006, 14:28   #6  
cherv is offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Регистрация: 24.05.2006
Цитата:
Сообщение от vallys
А по поводу вопроса автора, то я считаю, что т.к. join и outer join в команде update_recordset не применимы (по крайней мере в 3-ей версии), то обновить поле первой таблицы значением из второй можно либо через while select либо через connection. В последнем случае нужно знать чем такой подход отличается от while select
Ну, про connection (если имеется в виду ODBC/ADO Connection), то представляю немного. В-общем, так и предполагал, но все равно спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по модулю Расчеты с персоналом. Выплата заработной платы. Keks DAX: Функционал 7 28.12.2009 10:31
Вопрос по созданию отчета asd1274 DAX: Программирование 6 05.12.2008 21:44
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36

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

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

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