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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.04.2003, 12:48   #1  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
Связывание источников данных в запросах
Прошу знающих людей объяснить, как происходит связывание источников данных в отчетах, то есть в чем различие между связыванием одного источника к одному источнику и одного к нескольким на последующем уровне - не работает так как нужно . Вообще какие есть ограничения при построении дерева источников данных - Ахсапта компилирует и запускает практически любую комбинацию но выбирает данные не верно. Чем управляет "таинственное" свойство источников данных FetchMode (так и не понял ни из документации ни из предыдущих сообщений в форум). Заране большое спасибо!
Старый 17.04.2003, 11:26   #2  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
А в ответ тишина...
Ладно, сам разберусь!
Старый 17.04.2003, 11:45   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Когда разберешься, расскажи всем о своих результатах, pls.
Старый 17.04.2003, 15:47   #4  
metal is offline
metal
Юзовские
Дети Юза
 
92 / 10 (1) +
Регистрация: 06.08.2002
Адрес: Украина
Влрос хороший. Сам часто сталкивался. Но времени основательно разбираться не было. Если query не работал, я смотрел какой ахарта генерирует запрос к базе данных (например, системной трассировкой). Она просто не join'ит таблицы если, ей что-то не нравится в запросе. В этом случае, я комбинировал значение свойства FetchMode на источниках и этим добивался, что оно в конце концов начинало работать как надо.
Что конкретно означает свойство FetchMode я так и не понял. Выяснил только, что почти всегда его нужно устанавливать в 1:1, 1:n необходим при OutherJoin и, возможно, в некоторых других случаях.
Поделитесь опытом, у кого есть...
Старый 31.05.2010, 11:19   #5  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Может за 7 лет кто-нибудь выяснил в подробностях, какой именно "физический" смысл имеет FetchMode? Где его нужно и не нужно ставить (вид джойна, узел или лист в иерархии датасорсов)?
Старый 31.05.2010, 12:11   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Все зависит от того, какой вам нужно получить запрос в результате?
Если вам нужен запрос с join, как вы бы написали в SQL, то ВСЕГДА используйте FetchMode равный One2One.
Если же вам нужно другое поведение, когда данные из связанных таблиц выбираются отдельно, и у вас есть код, который завязан на смену записи в конкретных таблицах, то используйте 1ToN

Мой общий совет - всегда используйте 1-To-1
За это сообщение автора поблагодарили: alex55 (1).
Старый 31.05.2010, 15:02   #7  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от vanokh Посмотреть сообщение
Может за 7 лет кто-нибудь выяснил в подробностях, какой именно "физический" смысл имеет FetchMode? Где его нужно и не нужно ставить (вид джойна, узел или лист в иерархии датасорсов)?
Если на узел вешаете несколько листов (например запрос по InventTrans c при-join'ными InventTable и InventDim) - листам надо указывать. В противном случае, система, не зная, какие отношения между таблицами существуют, при попытке добавить второй лист сбросит первый - что прекрасно видно в дебаггере при трассировке.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 31.05.2010, 15:18   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Если на узел вешаете несколько листов (например запрос по InventTrans c при-join'ными InventTable и InventDim) - листам надо указывать. В противном случае, система, не зная, какие отношения между таблицами существуют, при попытке добавить второй лист сбросит первый - что прекрасно видно в дебаггере при трассировке.
Ну, это не совсем так.
Система, ессно, знает, какие отношения существуют между таблицами, и может по ним построить правильный запрос. Просто значение по умолчанию для FetchMode = Один ко Многим.
Поэтому вместо одного запроса выполняется несколько независимых:
Один - InventTrans->InventTable
Второй - InventTrans->InventDim

а потом все 3 курсора заполняются соответствующими данными.

Поэтому в дебаггере видно, как будно один источник "отпал".

Если же посмотреть, какие запросы при этом выполнит SQL, то должны увидеть оба запроса.

Я все собираюсь написать блог пост tutorial с примерами, но не хватает времени.
За это сообщение автора поблагодарили: mazzy (2), Pustik (10), Logger (2), TasmanianDevil (2), konopello (2), S.Kuskov (3), vanokh (1), Cardagant (2).
Старый 01.06.2010, 03:47   #9  
vanokh is offline
vanokh
Участник
 
108 / 63 (3) ++++
Регистрация: 23.10.2008
Ага, многое прояснилось.
Про смену записи в конкретных датасорсах я догадался
Еще вопрос - допустим у нас есть запрос с несколькими Exists Join'ами. В этом случае для основного источника все они вернут по одной записи. На практике я столкнулся с тем, что основной запрос с учетом фильтра по джойнам выбирает одну запись, а next() в Query проходит аж 30 раз (Exists Join'ов присоединено 6-7 штук). Спасает One2One или контроль changed() на основном запросе. Но так и осталось загадкой почему все-таки 30 раз...
Старый 17.04.2013, 18:34   #10  
kitty is offline
kitty
Участник
 
370 / 30 (2) +++
Регистрация: 24.05.2005
2 kashperuk: Эта статья про FetchMode на axaptapedia находится(не нахожу там) или в каком-то другом блоге?
Старый 17.04.2013, 22:45   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
К сожалению, так и не написана, в виде разных маленьких заметок у меня на диске.
Теги
faq, fetchmode, one2one, как правильно, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Невозможно выполнить команду языка определения данных в () iHomer13 DAX: Программирование 8 18.07.2008 10:56
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Объединение источников данных DreamCreator DAX: Программирование 26 04.08.2005 14:16
Древовидная структура источников данных в Query rumpleteazer DAX: Программирование 7 03.02.2003 15:52

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

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

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