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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.06.2006, 15:25   #1  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Lookup form, OuterJoin и фильтр
Помогите разобраться.

Cоздал Lookup form на основе таблицы InventTable и CustVendExternalItem. Т.е. необходимо отобразить в выпадающем списке строки таблицы InventTable и колонку Внешняя номенклатура CustVendExternalItem.ExternalItemId. Если установить связь между таблицами InnerJoin - фильтр по всем колонкам работает как и надо. Если OuterJoin - фильтр работает только по столбцам таблицы InventTable, а по полю Внешняя номенклатура не работает. Что за багофича?
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 15:31   #2  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Ну да, а как фильтровать, если наличие записи по условиям связи в принципе необязательно?

С уважением, itfs.
Старый 08.06.2006, 16:33   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Встречный вопрос -а зачем в лукаме устанавливать outerJoin?
Старый 08.06.2006, 16:55   #4  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Чтобы в список попадали не только строки таблицы CustVendExternalItem, но и InventTable. (Не каждая строка InventTable имеет соответствие CustVendExternalItem)
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 17:01   #5  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от Russland
Чтобы в список попадали не только строки таблицы CustVendExternalItem, но и InventTable. (Не каждая строка InventTable имеет соответствие CustVendExternalItem)
Вы как-то себе противоречите - что значит не только CustVendExternalItem? что для вас первично - если CustVendExternalItem - тогда все просто - выбирайте CustVendExternalItem а к ней по inner join цепляйте InventTable - соответствие тут есть всегда.
Старый 08.06.2006, 17:08   #6  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Возможно не совсем точно объяснил

Первичен InventTable
В выпададающий список должны попасть все строки из InventTable.
Кроме того, если одна строка в InventTable имеет отображение n-строками в CustVendExternalItem, в списке должны отобразиться n-строк этой номенклатуры.

Классический Outer.
Или я что-то упускаю?
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 17:09   #7  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
если в CustVendExternalItem строки нет, всё равно строка должна быть отображена
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 17:10   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, классический outerJoin - ну, тогда придется отказаться от фильтрации. ;(
Старый 08.06.2006, 17:12   #9  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Абыдно
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 17:24   #10  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от itfs
Ну да, а как фильтровать, если наличие записи по условиям связи в принципе необязательно?

С уважением, itfs.
Ну кстати нормальный Transact SQL с этим справляется - если это вопрос жизни и смерти - сделайте "поддельную" таблицу, на скуле описаную как view.
Старый 08.06.2006, 17:40   #11  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
А что мешает добавить в форме фильтра еще раз таблицу "Внешнее описание номенклатуры" ч/з 1:n и отфильтровать по полю уже этой таблицы?
__________________
Axapta v.3.0 sp5 kr2
Старый 08.06.2006, 17:46   #12  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Да вроде пока не вопрос.

А разве View в аксапте умеют работаь с outerJoin?
Они вроде только только под inner заточены.
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 17:50   #13  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Цитата:
Сообщение от AndyD
А что мешает добавить в форме фильтра
Не посылаю я на форму фильтра пользователя
Просто пользуюсь функциональностью
правая кнопка мыши
-Найти
-Фильтр

а про добавление ч/з 1:n - что-то я сообразить не могу
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.06.2006, 17:53   #14  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от AndyD
А что мешает добавить в форме фильтра еще раз таблицу "Внешнее описание номенклатуры" ч/з 1:n и отфильтровать по полю уже этой таблицы?
Я понял суть - через кнопку фильтр.. в принципе выход..

Последний раз редактировалось MironovI; 08.06.2006 в 18:18.
Старый 08.06.2006, 17:58   #15  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от Russland
Да вроде пока не вопрос.

А разве View в аксапте умеют работаь с outerJoin?
Они вроде только только под inner заточены.
Вот тут подробно про "поддельные" таблицы Данные из всех компаний но повторюсь - это если совсем за горло возьмут
Старый 08.06.2006, 18:14   #16  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
2 MironovI
Да, уверен.
Вот запрос в первом случае
X++:
SELECT *
FROM  {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON 
((B.DATAAREAID='dem') AND ((B.EXTERNALITEMID='121') AND (A.ITEMID=B.ITEMID)))} 
WHERE (A.DATAAREAID='dem')
Обратите внимание, что ограничение EXTERNALITEMID = '121', накладывает на условие связи Outer Join, т.е. выберутся все записи InventTable и для них только те записи CUSTVENDEXTERNALITEM для которых это условие выполняется

Вот запрос с добавлением еще одной таблицы
X++:
SELECT *
FROM  {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B 
ON ((B.DATAAREAID='dem') AND (A.ITEMID=B.ITEMID))},
CUSTVENDEXTERNALITEM C(NOLOCK)  
WHERE (A.DATAAREAID='dem') AND ((C.DATAAREAID='dem') AND ((C.EXTERNALITEMID='121') AND (A.ITEMID=C.ITEMID))) 
ORDER BY A.DATAAREAID,A.ITEMID
Т.е. ограничение уже накладывается на InventTable
__________________
Axapta v.3.0 sp5 kr2
Старый 08.06.2006, 18:21   #17  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Каюсь что сразу не допонял, позже дошло, аж пост переделал - вобщем респект, хоть это и не работа с гридом лукапа, но - даже без программирования
Старый 09.06.2006, 12:13   #18  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Цитата:
Сообщение от MironovI
Ну кстати нормальный Transact SQL с этим справляется - если это вопрос жизни и смерти - сделайте "поддельную" таблицу, на скуле описаную как view.
Наверное, но с этим моя логика не справляется.
Как это так? Покажи мне всех, неважно есть у них хвост или нет. И тут же, а теперь спячь из них всех у кого он не зеленый. Спрашивается у кого хвоста нет вообще он зеленый или нет?

С уважением, itfs.
Старый 09.06.2006, 12:33   #19  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
По-видимому, имелось в виду что-то типа этого
X++:
SELECT *
FROM  {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON 
((B.DATAAREAID='dem') AND (A.ITEMID=B.ITEMID))} 
WHERE (A.DATAAREAID='dem') and (B.EXTERNALITEMID='121')
__________________
Axapta v.3.0 sp5 kr2
Старый 09.06.2006, 13:13   #20  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Цитата:
Сообщение от AndyD
По-видимому, имелось в виду что-то типа этого
X++:
SELECT *
FROM  {oj INVENTTABLE A LEFT OUTER JOIN CUSTVENDEXTERNALITEM B ON 
((B.DATAAREAID='dem') AND (A.ITEMID=B.ITEMID))} 
WHERE (A.DATAAREAID='dem') and (B.EXTERNALITEMID='121')
В конечном итоге наверное, но ведь события развивались несколько иначе. И судя по всему, автор поста исходил из предположения, что он из любой начальной точки может без проблем попасть в любую другую. Тут замешана философия. Можно говорить об sql-предложениях и каждой точке соответствует некоторое sql-предложение. И его можно представить. Но, что от одного sql-предложения существует операция перехода к другому даже в рамках просто логики, это необязательно, неговоря о возможностях конкретного инструментария.

С уважением, itfs.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
gatesasbait: How to define a custom lookup form for an extended datatype Blog bot DAX Blogs 0 09.07.2008 22:05
Проблема с Lookup Form artem-t DAX: Программирование 5 17.01.2007 13:15
Фильтр в lookup Azat DAX: Программирование 7 08.11.2005 11:40
lookup фильтр в произвольной lookup форме 111andrei DAX: Программирование 4 05.10.2005 11:28
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:37.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.