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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.10.2010, 14:09   #1  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Lightbulb Связь Outer Join и фильтры по полям привязанной таблицы
Здравствуйте!

Имеется форма с гридом, в гриде отображаются поля двух таблиц, связанных через outer join.

Столкнулся с тем, что не работают фильтры по полям источника данных, привязанному посредством outer join к родительскому датасоурсу через свойства источника. Каким образом можно организовать подобную фильтрацию?
__________________
С уважением, Александр.
Старый 13.10.2010, 14:47   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
попробуйте сделать view
Старый 13.10.2010, 14:49   #3  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
попробуйте сделать view
Дело в том, что необходимо редактировать данные в главной таблице.
__________________
С уважением, Александр.
Старый 13.10.2010, 14:54   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Тогда можно сделать view в которой будет аутер джоин и проиннерджоинить этот вью с главной таблицей. Проблема в том, что сейчас нет способа разделить те ренджи, которые являются частью where clause от тех которые внутри on clause - и они все идут в on clause.
За это сообщение автора поблагодарили: samolalex (1).
Старый 13.10.2010, 15:25   #5  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
видел, что в некоторых темах упомянуто свойство QueryFetchMode::One2One, каким образом оно относится к связи outerjoin с точки зрения поставленной задачи?
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 13.10.2010 в 15:28.
Старый 13.10.2010, 16:04   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от samolalex Посмотреть сообщение
видел, что в некоторых темах упомянуто свойство QueryFetchMode::One2One, каким образом оно относится к связи outerjoin с точки зрения поставленной задачи?
Связывание источников данных в запросах
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Если вам нужен запрос с join, как вы бы написали в SQL, то ВСЕГДА используйте FetchMode равный One2One
За это сообщение автора поблагодарили: samolalex (1).
Старый 14.10.2010, 09:02   #7  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Спасибо за полезную ссылку. Но все же не могу понять является ли создание программных связей с применением fetchMode::One2One решением задачи, а именно возможностью создания фильтрации по полям привязанного путем outer join датасоурса. Пробовал реализовать связь программно в методе init родительского датасоурса, результат не получил (код приведен ниже). Может что-то делаю неверно?

X++:
qbds = this.query().dataSourceTable(tableNum(Table1));
qbds.addDataSource(tableNum(Table2));
qbds.addLink(fieldNum(Table1, Field1), fieldNum(Table2, Field1));
qbds.joinMode(joinMode::OuterJoin);
qbds.fetchMode(QueryFetchMode::One2One);
__________________
С уважением, Александр.
Старый 14.10.2010, 09:28   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
не поможет - посмотрите в сгенеренный SQL - все условия помещаются после ON - то есть фильтр идет не поверх джоина, а просто отберутся все записи основной таблицы, но в тех из них, где условия по подчиенной не соблюдаются, эта подчиненная просто не покажется.

Делайте view
Старый 14.10.2010, 10:03   #9  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от belugin Посмотреть сообщение
Тогда можно сделать view в которой будет аутер джоин и проиннерджоинить этот вью с главной таблицей...
Чего-то я не въеду... Разве можно во view соединять источники по OuterJoin?
Старый 14.10.2010, 10:09   #10  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
сделать можно, но это выходит за пределы стандартных возможностей Ax, поэтому от этого варианта я отказался.
Вот здесь поднимался этот вопрос, но до конца раскрыт не был.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 14.10.2010 в 10:13.
За это сообщение автора поблагодарили: tricky (1).
Старый 14.10.2010, 10:14   #11  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от samolalex Посмотреть сообщение
сделать можно, но это выходит за пределы стандартных возможностей Ax, поэтому от этого варианта я отказался.
А... кажися понял - view на самой СУБД? Ну да, концептуальное решение )).
Старый 14.10.2010, 10:31   #12  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Помнится, как-то применял следующий подход: на executeQuery() перед супером проверял наличие рейнджей на приджойненном по outer датасорсу, и если установлен фильтр - менял джойн на inner (и обратно на outer при отутствии).
__________________
Андрей.
За это сообщение автора поблагодарили: tricky (2).
Старый 14.10.2010, 10:46   #13  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от tricky Посмотреть сообщение
А... кажися понял - view на самой СУБД? Ну да, концептуальное решение )).
Да, предполагается "перекраивание" запроса на уровне СУБД)
__________________
С уважением, Александр.
Старый 14.10.2010, 10:57   #14  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от tricky Посмотреть сообщение
Чего-то я не въеду... Разве можно во view соединять источники по OuterJoin?
В Ax2009 можно сделать View на основе Query с outer join
За это сообщение автора поблагодарили: tricky (2), leva (1), IvanOFF (2).
Старый 14.10.2010, 10:58   #15  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Если у вас "простенький" случай: т.е. на форме нужно отобразить записи "дочерней" таблицы, которая является неким справочником, ссылка на который из "родительской" таблицы может отсутствовать, то можно попробовать создать в "справочнике" пустую запись с пустым ключевым полем. В таком случае таблицы можно будет соединять по InnerJoin со всеми вытекающими из этого вкусностями. Конечно не совсем красиво: потребуется все время следить, чтобы эта пустая запись присутствовала - но это минимум программирования.
За это сообщение автора поблагодарили: samolalex (1).
Теги
outer join, query, view, фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Несколько outer join в запросе _scorp_ DAX: Программирование 2 11.04.2008 10:56
Данные в Grid из таблиц, связанных по Outer Join cherv DAX: Программирование 2 17.02.2007 01:36
2 и более OUTER JOIN к одному паренту Ronin DAX: Программирование 21 19.12.2005 13:42
Outer Join Anais DAX: Программирование 3 20.05.2005 12:10
outer join для трех таблиц r25 DAX: Программирование 4 29.04.2004 15:42

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

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

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