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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.10.2013, 13:18   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
У табличного буфера есть методы joinChild()/joinParent(), по ним можно получить связанный черезе запрос буфер другой таблицы.
За это сообщение автора поблагодарили: Logger (3).
Старый 10.10.2013, 14:57   #2  
ex3em is offline
ex3em
Участник
 
38 / 19 (1) ++
Регистрация: 22.07.2008
joinChild()/joinParent(), не нашел как достучаться из дисплейметода на датасорсе

пытался
X++:
display Comment(ActionDetailTable _actionDetailTable)
{
    ActionTable actionTable;
    ;
    
actionTable = _actionDetailTable.dataSource().cursor().joinParent();
}
не получается достучаться до парента
Старый 10.10.2013, 15:10   #3  
ex3em is offline
ex3em
Участник
 
38 / 19 (1) ++
Регистрация: 22.07.2008
В SQL это было бы так:

X++:
select 
  isNull(detailTable.Comment, actionTable.Comment) as comment
from actionTable
left outer join detailTable
  on actionTable.ActionId = detailTable.ActionId
Старый 10.10.2013, 15:28   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от ex3em Посмотреть сообщение
joinChild()/joinParent(), не нашел как достучаться из дисплейметода на датасорсе. пытался
X++:
display Comment(ActionDetailTable _actionDetailTable)
{
    ActionTable actionTable = _actionDetailTable.dataSource().cursor().joinParent();
}
не получается достучаться до парента
А не надо мудрить Курсор datasource'а - это текущая выбранная на гриде запись, к которой кнопки привязаны и проч., а display-методы отображают данные для кучи записей на гриде, именно поэтому display-методу на datasource передается буфер, для которого он должен что-то отобразить, и который может не быть текущей выбранной записью. Поэтому надо, во-первых, дергать метод joinChild на действии, а не joinParent на детализации, а во-вторых, дергать на переданном буфере, а не на курсоре formDS. Я вот щас на коленке сделал форму CustTable outer join CustTrans, где display-методом вывожу либо CustTrans.RecId, если он есть, либо CustTable.RecId. Вот код метода:
X++:
display Description test(CustTable _custTable)
{
    CustTrans   ct = _custTable.joinChild();
    RecId       id = ct.RecId ? ct.RecId : _custTable.RecId;
    Description ret = strfmt('%1 %2', id, ct.RecId ? 'trans' : 'table');
    return ret;
}
А вот что показывается на форме:
За это сообщение автора поблагодарили: ex3em (1).
Старый 10.10.2013, 15:56   #5  
ex3em is offline
ex3em
Участник
 
38 / 19 (1) ++
Регистрация: 22.07.2008
Thumbs up
Ура!! Заработало, Спасибо что указали где искать. не заметил что у входного параметра сразу есть joinChild()/joinParent(). Вот и начал извращенно лезть правой рукой к левому уху

на OuterJoin если из чилд датасорса лезть по
_actionDetailTable.joinParent(); не получается,
похоже из-за отсутствия в чилде записи.

а вот наоборот получилось. В паренте метод и из него лезть к чилду
и проверять есть у него RecId - если есть то коммент чилда.
Иначе комент парента.

Огромное человеческое спасибо всем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отображение аналитик в гриде складских журналов. Баг? _scorp_ DAX: Программирование 2 25.10.2012 11:48
Не обновляется display метод на форме kit22 DAX: Программирование 7 15.08.2012 11:04
Недоступность источника данных формы в display/edit-методах таблицы - баг или фича с глубоким смыслом? TasmanianDevil DAX: Программирование 10 03.08.2012 15:00
Две таблицы в одном гриде Oloops DAX: Программирование 3 11.08.2006 14:25
edit и display методы Maxim Gorbunov DAX: База знаний и проекты 4 15.01.2002 12:58

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

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

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