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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.03.2009, 15:38   #1  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Задачка с запросом в форме
Всем привет.
есть задачка которую не знаю как сделать.

Исходные данные:
Форма, на ней 3 связанных источника данных: InventSum->InventDim->InventBatch. Данные группируются (хотя думаю это не важно).
Задача: из дата метода на одном источнике данных посмотреть значение полей другого источника данных (например метод на InventSum, а надо посмотреть значение поля на InventDim)
__________________
--- SHiSHok
Старый 30.03.2009, 15:52   #2  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
пишем в методе и все
InventDim.InventLocationId, то есть указываем курсор по названию датасорса
или что-то другое имеется ввиду...?
Старый 30.03.2009, 16:27   #3  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
пишем в методе и все
InventDim.InventLocationId, то есть указываем курсор по названию датасорса
или что-то другое имеется ввиду...?
не все так просто. такое обращение (InventDim.InventLocationId) не дает значение соответствующее записи с которой вызывается дата метод (например с InventSum). Т.е. при вызове дата метода на InventSum меняются значения только источника InventSum, остальные источники заполняются первым значение и не изменяются при вызове дата метода.
__________________
--- SHiSHok

Последний раз редактировалось SHiSHok; 30.03.2009 в 16:29.
Старый 30.03.2009, 16:29   #4  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Тогда все поля заполнятся значением, расчитанным по текущему положению курсора в форме, а при переходе по записям будут дружно изменяться.

Лучше переформулировать задачу (либо я чего-то не знаю).
__________________
С уважением,
glibs®
Старый 30.03.2009, 17:10   #5  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от glibs Посмотреть сообщение
Тогда все поля заполнятся значением, расчитанным по текущему положению курсора в форме, а при переходе по записям будут дружно изменяться.
Лучше переформулировать задачу (либо я чего-то не знаю).
уточнение: данные запроса отображаются на grid. значение поля связанной таблицы надо получить в display method-е определенном на DataSource. Как уже говорил запрос с группировкой. InventBatch связан с InventDim (по inventBatchId) и InventSum (по ItemId).
display method определен на DataSource InventSum, надо добраться к InventBatch.
Моя трассировка из дисплей метода показывает что соответствие полей InventSum<->InventDim<->InventBatch отсутствует .
__________________
--- SHiSHok
Старый 30.03.2009, 17:15   #6  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от SHiSHok
...
display method определен на DataSource InventSum, надо добраться к InventBatch.
...
Попробуйте наоборот. Или приведите постановку задачи в качестве примера.
__________________
С уважением,
glibs®
Старый 30.03.2009, 17:39   #7  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
SHiSHok, выложил бы проект с этой формой - давно бы нашли в чем дело.
Проверь какой у тебя тип джойна между датасорсами (и есть ли там вообще джойн ).
Старый 30.03.2009, 17:50   #8  
ShowPoint is offline
ShowPoint
Участник
 
16 / 10 (1) +
Регистрация: 28.07.2005
Адрес: Moscow, Russia
Цитата:
Сообщение от SHiSHok Посмотреть сообщение
display method определен на DataSource InventSum, надо добраться к InventBatch.
Можно совсем в лоб:

X++:
display <-> <>(InventSum _cursor)
{
    return InventBatch::find(InventDim::find(_cursor.InventDimId).InventBatchId, _cursor.ItemId).<->;
}
Но, судя по всему, Вы там какого-то кальмара узлом из датасорсов завязали. Лучше развязать, чем так извращаться.
__________________
SY,
AVA

Последний раз редактировалось ShowPoint; 30.03.2009 в 17:57.
Старый 30.03.2009, 18:04   #9  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Запрос то с группировкой. Автор не зря спрашивает. _cursor.InventDimId может быть неизвестным по объективным причинам (по InventDim производится группировка по полям аналитик).
__________________
С уважением,
glibs®
Старый 30.03.2009, 18:20   #10  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
чтоб выложить проект его причесать надо сначала.
Задача простая: SalesQuickQuote
запрос InventTable->InventSum->inventDim->InventBatch (везде inner join). в inventBatch есть аттрибут A в зависимости от значения которого будет вычислять поле на на InventSum (и edit метод по разному будет отрабатывать). inventBatch вяжется к inventSum и inventDim, остальные по очереди друг к дружке. аттрибут А, и вычисляемые поля отображаются на гриде. Исполняемый запрос с группировка имеет все необходимые данные чтобы вычислить поля. (это я к вариантам вида A::find(B::find(c::find... - смерть SQL серверу особенно в дисплей методе источника данных)
Так вот не могу добраться к значениям аттрибута А таблицы InventBatch из display и edit методов inventSum. (надеюсь как то понятней стало)
__________________
--- SHiSHok
Старый 30.03.2009, 18:22   #11  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
давно это было... тогда делал что то типа такого:

X++:
display <-> <>(InventSum _cursor)
{
    InventDim    _InventDim = _cursor.joinChild();
    InventBatch _InventBatch = _InventDim .joinChild();

    return _InventBatch.<->;
}
За это сообщение автора поблагодарили: SHiSHok (2).
Старый 31.03.2009, 10:54   #12  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Спасибо raz, то что надо.
__________________
--- SHiSHok
Старый 17.07.2014, 12:42   #13  
userax2009 is offline
userax2009
Участник
 
24 / 10 (1) +
Регистрация: 16.05.2014
Цитата:
Сообщение от raz Посмотреть сообщение
давно это было... тогда делал что то типа такого:

X++:
display <-> <>(InventSum _cursor)
{
    InventDim    _InventDim = _cursor.joinChild();
    InventBatch _InventBatch = _InventDim .joinChild();

    return _InventBatch.<->;
}
почему я получаю пустоту таким же способом ??? (форма, 2 датасоурса) АХ 2009
X++:
display str 50 usInfoName()
{
    SysDataBaseLog2 _sysDataBaseLog2;
    UserInfo _userInfo = _sysDataBaseLog2.joinChild();


    return _userinfo.name;
}
Старый 17.07.2014, 12:55   #14  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
1. Почему не:
X++:
display str 50 usInfoName(SysDataBaseLog _sysDataBaseLog2)
{
    UserInfo _userInfo = _sysDataBaseLog2.joinChild();


    return _userinfo.name;
}
2. Какой Link type у датасорса UserInfo?
Старый 17.07.2014, 13:33   #15  
userax2009 is offline
userax2009
Участник
 
24 / 10 (1) +
Регистрация: 16.05.2014
стандартный Link Type - Delayed, менял на Inner Join - никакой разницы
Старый 17.07.2014, 13:43   #16  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от userax2009 Посмотреть сообщение
почему я получаю пустоту таким же способом ??? (форма, 2 датасоурса) АХ 2009
X++:
display str 50 usInfoName()
{
    SysDataBaseLog2 _sysDataBaseLog2;
    UserInfo _userInfo = _sysDataBaseLog2.joinChild();


    return _userinfo.name;
}
Сделайте что-нибудь с _sysDataBaseLog2, а то он у вас пустой. Товарищ raz вам как бы уже намекнул в коде.
__________________
// no comments
Старый 17.07.2014, 13:50   #17  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Delayed - это как раз не соединение. При такой связи для каждой строки основной таблицы будет выполнен отдельный запрос к подчиненной. В одном гриде, к примеру, вы такую связку не отобразите. Метод joinChild же используется для того чтобы определить соответствующую подчиненную строку внутри одного запроса.

И raz вас правильно поправил. Не понятно для какого курсора вы пытаетесь найти дочернюю запись.
За это сообщение автора поблагодарили: userax2009 (1).
Теги
datametod, datasource, form, query, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как мне обновить Grid расположенный на другой форме? Yuri Safronov DAX: Программирование 17 22.01.2013 14:18
Использование семейства InventDimCtrl_Frm_* - 2 DS InventDim на одной форме Pavlo AKA Panok DAX: База знаний и проекты 5 22.12.2008 17:15
executeQuery на Форме Arahnid DAX: Программирование 12 03.11.2007 23:25
Добавление источника к запросу на форме Lucky13 DAX: Программирование 1 21.05.2007 17:12
BugFix: В форме складских журналов нельзя перемещаться с помощью клавиш курсора Maxim Gorbunov DAX: Программирование 5 21.01.2005 01:20

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

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

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