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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2008, 18:09   #1  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
Как приджойнить "левый" датасорс
Образно ситуация такая:
Есть форма, на ней датасорс, допустим, InventTable. У меня есть своя таблица у которой 2 поля такие же как и у InventTable, например, ItemId и PropertyId. Я хочу чтобы эти два датасорса объединялись на форме по совпадающим полям. Нужен outer join, т.е если нет записей в дочернем источнике отображалось его пустое поле.
Пробовал создавать релейшн на своей таблице, и в дизайнере указывал соединение c InventTable типа outer join - появляется ошибка.
Думаю что нужно делать программно, но четкого понимания как это сделать нет. Подскажите пож-та кто знает.
Старый 06.03.2008, 12:34   #2  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
никто не решал подобную задачу?
Старый 06.03.2008, 12:37   #3  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
такую задачу решали все. просто вы в чём-то ошиблись. посмотрите примеры джойнов на других формах
Старый 06.03.2008, 12:57   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Обычно помогает, если указывается текст ошибки
Старый 06.03.2008, 12:58   #5  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
а какой текст ошибки?

Too kashperuk:
прошу прощения за спам) так получилось..
__________________
Романтик..

Последний раз редактировалось xenikk; 06.03.2008 в 13:01.
Старый 06.03.2008, 13:25   #6  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
текст ошибки:
Невозможно выбрать запись в 'Моя таблица' ('MyTable')
Использован оператор объединения таблиц join, но выражение WHERE не содержит связи между таблицами.
Старый 06.03.2008, 13:31   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Хм. А вы Relation между таблицами настроили по этим двум полям?
Старый 06.03.2008, 13:37   #8  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
конечно.
причем InnerJoin отрабатывает.

Последний раз редактировалось breakpoint; 06.03.2008 в 13:39.
Старый 06.03.2008, 14:08   #9  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Быстрее будет, если вы хро выложите.
Старый 06.03.2008, 14:46   #10  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
проект выложить проблема...
я сильно упростил ситуацию
Старый 06.03.2008, 15:12   #11  
xenikk is offline
xenikk
Axapta Retail User
Аватар для xenikk
Axapta Retail User
 
30 / 10 (1) +
Регистрация: 20.06.2007
Адрес: Moscow
тогда у вас решение проблемы одно: следовать совету "ice"..
может загвоздка в чем-то другом?
__________________
Романтик..
Старый 06.03.2008, 15:51   #12  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от breakpoint Посмотреть сообщение
...Есть форма, на ней датасорс, допустим, InventTable. У меня есть своя таблица... Я хочу чтобы эти два датасорса объединялись на форме по совпадающим полям. Нужен outer join... - появляется ошибка.
текст ошибки:
Невозможно выбрать запись в 'Моя таблица' ('MyTable')
Использован оператор объединения таблиц join, но выражение WHERE не содержит связи между таблицами.
Вообщем у вас нет связи (условия в выражении where) между таблицей MyTable и предыдущей таблицей (MyTable ведь не к InventTable присоеденена?). Необходимо либо "опустить" InventTable в запросе/query к MyTable, либо добавить фиктивную (а может и настоящую) связь между MyTable и пред. таблицей. Фиктивная связь обсуждалась тут: 2 и более OUTER JOIN к одному паренту

Последний раз редактировалось vallys; 06.03.2008 в 15:55.
За это сообщение автора поблагодарили: breakpoint (1).
Старый 07.03.2008, 12:46   #13  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
Да, вы правы. Я пытался приджойнить MyTable к InventTable минуя еще ряд таблиц которые связаны с InventTable по InnerJoin. В итоге попробовал связать MyTable по OuterJoin с последней таблицей, которая связана с InventTable InnerJoin. Вроде работает, но если накладываю фильтр на MyTable InventTable не фильтруется. Вообщем продолжаю копать...
Может ктонибудь знает пример формы где можно посмотреть прим. такую схему:
DS1
InnerJoin DS2 -> DS1
OuterJoin DS3 -> DS2
ну и чтобы фильтры работали как надо )

Последний раз редактировалось breakpoint; 07.03.2008 в 12:56.
Старый 07.03.2008, 13:24   #14  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от breakpoint Посмотреть сообщение
..если накладываю фильтр на MyTable InventTable не фильтруется...
Фильтры в Аксапте - это условия в конструкции "where", а Вам, по всей видимости, нужны условия в конструкции "having". Так Аксапта не сможет, разве что через вьюхи (в запросе все равно не будет "having")... ну или как-нибудь через временные таблицы
Посмотрите запрос, который уходит на SQL-сервер - там видно как используются фильтры.

Последний раз редактировалось vallys; 07.03.2008 в 13:31.
Старый 07.03.2008, 15:57   #15  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
Решил сделать через временную таблицу. Данными ее заполнил теперь остается приджойнить ее InnerJoin 1:1 к InventTable по ItemId. Попробовал создать на ней релэйшн к InventTable по ItemId и в дизайнере настроить связь - не работает...
подскажите как это сделать
Старый 07.03.2008, 16:09   #16  
breakpoint is offline
breakpoint
Участник
 
77 / 10 (1) +
Регистрация: 05.03.2008
Все, разобрался.
Старый 22.03.2008, 20:20   #17  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Прикольно.. А я почти всё время имел дело с ораклом и даже не подозревал о такой проблеме... )
Недавно столкнулся на Сиквеле, решил проблему на коленке путём прописывания рэнджа в датасорс 3 (и 4) прям на эктиве датасорса 1.
Ну вообщем всем спасибо за тему, буду знать.
__________________
Zhirenkov Vitaly
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
"while select" и "Query" ice DAX: Программирование 6 14.03.2007 12:54
Галка "Закрыто" на таблице "В наличии" sev DAX: Функционал 1 11.04.2006 10:19
Отображение финансовых аналитик в "Номенклатура" - "В наличии" Roenick DAX: Функционал 50 27.03.2006 21:58
"Закупка на основе заказов" или "сводное планирование" Hamster DAX: Функционал 2 17.02.2004 01:47
"LIKE" и "OR" в "qbds" @x DAX: Программирование 14 20.01.2004 13:20
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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