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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.07.2007, 11:02   #1  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Связывание датасорсов на форме
Добрый день всем!
Создаю лукапную форму. На ней следующие датасорсы: InventBatch, InventDim, InventSum и InventBatchReserve (некая таблица где содержатся зарезервированные партии). На форме нужно вывести партии из InventBatch, по
которым есть физическое наличие в InventSum и которых нет в таблице InventBatchReserve.
Делаю следующее:
1) привязываю InventBatchReserve к InventBatch по NotExistsJoin
2) привязываю InventDim к InventBatch по InnerJoin
(При этом в форме действительно отображаются только те партии которых нет в InventBatchReserve)
3) привязываю InventSum к InventDim по InnerJoin
При этом начинают отображаться партии которые есть в InventBatchReserve. В чем может быть дело, почему в этом случае не отрабатывает 1? В результирующем запросе формы вроде бы все как надо:

SELECT * FROM InventBatch
JOIN * FROM InventDim WHERE InventBatch.inventBatchId = InventDim.inventBatchId
JOIN * FROM InventSum WHERE InventDim.inventDimId = InventSum.InventDimId AND ((PhysicalInvent>0))
NOTEXISTS JOIN * FROM InventBatchReserve WHERE InventBatch.inventBatchId = InventBatchReserve.InventBatchId

Есть ли какое нибудь решение в данной ситуации или придется использовать временную таблицу?

Заранее спасибо.
Старый 12.07.2007, 11:06   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
партия идентифицируется парой (Номенклатура - ItemID, Номер партии - InventBatchID) соответственно надо добавлять это условие.
Старый 12.07.2007, 11:10   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
По идее такое возможно, если неправильно выстроены источники данных.
Пересоздайте форму, создавая источники в след. порядке:
InventSum
- InventDim (InnerJoin)
- InventBatch (InnerJoin)
- InventBatchReserve (not exists join)
Старый 12.07.2007, 11:45   #4  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Цитата:
Сообщение от kashperuk Посмотреть сообщение
По идее такое возможно, если неправильно выстроены источники данных.
Пересоздайте форму, создавая источники в след. порядке:
InventSum
- InventDim (InnerJoin)
- InventBatch (InnerJoin)
- InventBatchReserve (not exists join)
Cпасибо, помогло
Старый 04.10.2007, 14:41   #5  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
Тут кроется небольшая ошибочка: InventBatch имеет поиск по двум полям: InventBatchId и ItemId, так что напрямую, в автомате, в DataSource связывать InventBatch и InventDim корректно связать не удасться. Т.е. случае, если несколько номенклатур имеют один номер партии, то запрос будет работать неправильно.
Я сделал View, в котором связываются InventSum и InventDim (надо не забыть проставить во View Relations). А на форму в DataSource положил получившийся View и приджоинил к нему InventBatch, прописав в ините формы Relations между ними:


PHP код:
public void init()
{
    
QueryBuildDataSource    qbdsBatch;

    
super();

    
qbdsBatchinventSumDim_ds.query().dataSourceTable(tablenum(InventBatch));

    
qbdsBatch.clearLinks();
    
qbdsBatch.addLink(fieldnum(InventSumDimInventBatchId), fieldnum(InventBatchInventBatchId));
    
qbdsBatch.addLink(fieldnum(InventSumDimItemId), fieldnum(InventBatchItemId));

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как мне обновить 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
Как не выводить заголовки в форме, если нет строк? DreamCreator DAX: Программирование 9 29.05.2008 15:10
executeQuery на Форме Arahnid DAX: Программирование 12 03.11.2007 23:25
Название полей в форме запроса PavelSR DAX: Программирование 4 11.07.2007 17:19

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

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

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