![]() |
#1 |
MCTS
|
Lookup form, OuterJoin и фильтр
Помогите разобраться.
Cоздал Lookup form на основе таблицы InventTable и CustVendExternalItem. Т.е. необходимо отобразить в выпадающем списке строки таблицы InventTable и колонку Внешняя номенклатура CustVendExternalItem.ExternalItemId. Если установить связь между таблицами InnerJoin - фильтр по всем колонкам работает как и надо. Если OuterJoin - фильтр работает только по столбцам таблицы InventTable, а по полю Внешняя номенклатура не работает. Что за багофича?
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#2 |
Участник
|
Ну да, а как фильтровать, если наличие записи по условиям связи в принципе необязательно?
С уважением, itfs. |
|
![]() |
#3 |
Участник
|
Встречный вопрос -а зачем в лукаме устанавливать outerJoin?
![]() |
|
![]() |
#4 |
MCTS
|
Чтобы в список попадали не только строки таблицы CustVendExternalItem, но и InventTable. (Не каждая строка InventTable имеет соответствие CustVendExternalItem)
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Russland
Чтобы в список попадали не только строки таблицы CustVendExternalItem, но и InventTable. (Не каждая строка InventTable имеет соответствие CustVendExternalItem)
|
|
![]() |
#6 |
MCTS
|
Возможно не совсем точно объяснил
Первичен InventTable В выпададающий список должны попасть все строки из InventTable. Кроме того, если одна строка в InventTable имеет отображение n-строками в CustVendExternalItem, в списке должны отобразиться n-строк этой номенклатуры. Классический Outer. Или я что-то упускаю?
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#7 |
MCTS
|
если в CustVendExternalItem строки нет, всё равно строка должна быть отображена
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#8 |
Участник
|
Да, классический outerJoin - ну, тогда придется отказаться от фильтрации. ;(
|
|
![]() |
#9 |
MCTS
|
Абыдно
![]()
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#10 |
Участник
|
Цитата:
Сообщение от itfs
Ну да, а как фильтровать, если наличие записи по условиям связи в принципе необязательно?
С уважением, itfs. |
|
![]() |
#11 |
Участник
|
А что мешает добавить в форме фильтра еще раз таблицу "Внешнее описание номенклатуры" ч/з 1:n и отфильтровать по полю уже этой таблицы?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#12 |
MCTS
|
Да вроде пока не вопрос.
А разве View в аксапте умеют работаь с outerJoin? Они вроде только только под inner заточены.
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#13 |
MCTS
|
Цитата:
Сообщение от AndyD
А что мешает добавить в форме фильтра
Просто пользуюсь функциональностью правая кнопка мыши -Найти -Фильтр а про добавление ч/з 1:n - что-то я сообразить не могу
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
![]() |
#14 |
Участник
|
Цитата:
Сообщение от AndyD
А что мешает добавить в форме фильтра еще раз таблицу "Внешнее описание номенклатуры" ч/з 1:n и отфильтровать по полю уже этой таблицы?
Последний раз редактировалось MironovI; 08.06.2006 в 18:18. |
|
![]() |
#15 |
Участник
|
Цитата:
Сообщение от Russland
Да вроде пока не вопрос.
А разве View в аксапте умеют работаь с outerJoin? Они вроде только только под inner заточены. ![]() |
|
![]() |
#16 |
Участник
|
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') Вот запрос с добавлением еще одной таблицы 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
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#17 |
Участник
|
Каюсь что сразу не допонял, позже дошло, аж пост переделал - вобщем респект, хоть это и не работа с гридом лукапа, но - даже без программирования
![]() |
|
![]() |
#18 |
Участник
|
Цитата:
Сообщение от MironovI
Ну кстати нормальный Transact SQL с этим справляется - если это вопрос жизни и смерти - сделайте "поддельную" таблицу, на скуле описаную как view.
![]() Как это так? Покажи мне всех, неважно есть у них хвост или нет. И тут же, а теперь спячь из них всех у кого он не зеленый. Спрашивается у кого хвоста нет вообще он зеленый или нет? С уважением, itfs. |
|
![]() |
#19 |
Участник
|
По-видимому, имелось в виду что-то типа этого
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 |
|
![]() |
#20 |
Участник
|
Цитата:
Сообщение от 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') С уважением, itfs. |
|