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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2014, 22:45   #1  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Две темповые таблицы
Коллеги, добрый вечер! Ситуация следующая - есть две реальных таблицы jourHead и jourLine связанные между собой relation по двум полям.
И есть одна форма на который два грида jourHead и jourLine.
Дата сорс построенный на основе темповых таблиц - jourHead.setTmp() и
jourLine.setTmp().
При отображении формы в первом гриде данные с темповой таблицы, а вот строки грид по relation - данные подтягивает с regular table;
X++:
formDataSourceCommon.setTmp();
formDataSourceCommon.checkRecord(false);
formDataSourceCommon.setTmpData(common);
formDataSource.executeQuery();
даже не знаю что делать.
Заранее благодарю.
Старый 26.09.2014, 23:42   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Попробуйте что-то в этом духе на датасорсе строк:
X++:
formDataSource.query().dataSourceNo(1).clearDynalinks();
И еще загляните на вкладку "Запрос" в настройках формы (в тех, что вызываются из контекстного меню формы в пользовательском режиме) - может быть что-то станет более понятно.
Старый 30.09.2014, 11:19   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от axotnik88 Посмотреть сообщение
При отображении формы в первом гриде данные с темповой таблицы, а вот строки грид по relation - данные подтягивает с regular table;
Странно. А когда и где выполняется formDataSourceCommon.setTmp()?
Старый 01.10.2014, 12:25   #4  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Странно. А когда и где выполняется formDataSourceCommon.setTmp()?
На клиенте, после formRun.init() - перебираю datasource
Старый 01.10.2014, 12:46   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от axotnik88 Посмотреть сообщение
перебираю datasource
Может при переборе что-то пропускаете? Других идей нет
Старый 01.10.2014, 12:59   #6  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Может при переборе что-то пропускаете? Других идей нет
Когда убираю на форме - для датасорсов -inner join - тогда отображаются данные темповой таблицы.
Старый 01.10.2014, 13:08   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Никогда не встречал такого поведения. Какая у вас версия системы?
Сможете минимальный тестовый пример создать и проект здесь выложить?
Старый 01.10.2014, 17:50   #8  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Никогда не встречал такого поведения. Какая у вас версия системы?
Сможете минимальный тестовый пример создать и проект здесь выложить?
версия 2012 R2.
Есть класс, в нем метод заполнения:
X++:
inventItemLocation.setTmp();
    inventItemLocation.checkRecord(false);

    //BP Deviation documented
    inventItemLocationCountingStatus.setTmp();
    inventItemLocationCountingStatus.checkRecord(false);
...inventItemLocation.doinsert();
...inventItemLocationCountingStatus.doInsert()
на init datasource

X++:
 InventItemLocation.setTmp();
    InventItemLocation.checkRecord(false);
    InventItemLocation.setTmpData(callerEngine.parmInventItemLocation());
X++:
InventItemLocationCountingStatus.setTmp();
    InventItemLocationCountingStatus.checkRecord(false);
    InventItemLocationCountingStatus.setTmpData(callerEngine.parmInventItemLocationCountingStatus());
Первый датасорс - нормально отображает данные, но второй - Cannot select a record in Warehouse items (InventItemLocation).
InMemory temporary tables must be the outer tables when they are joined to a TempDB table or permanent table.
Старый 01.10.2014, 17:59   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от axotnik88 Посмотреть сообщение
на init datasource
После super() или до? Нужно после.
Старый 01.10.2014, 18:08   #10  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
после super();
Старый 01.10.2014, 18:25   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Судя по ошибке система думает что вы пытаетесь соединить постоянную таблицу со временной. Интересно в какой именно момент система проверяет это? Потому что в этот момент вторую (подчиненную) таблицу система считает уже временной, а первую (ведущую) - ещё постоянной. Возможно имеет значение то, в такой последовательности вызываются методы init() датасорсов? Попробуйте вынести код, делающий таблицы временными, в init формы после super().
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помогите показать в одном гриде две таблицы s.alex DAX: Программирование 12 25.09.2009 13:11
Две таблицы в одном datasource Turetskiy DAX: Программирование 10 16.09.2008 16:35
две таблицы в двух разных вирт компаниях kitty DAX: Программирование 1 08.11.2005 18:18
Один DataSource на две таблицы Lucky13 DAX: Программирование 14 26.09.2005 14:12
Две таблицы - один grid!? Kengo DAX: Программирование 3 01.11.2004 15:01
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:35.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.