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