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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.01.2006, 10:54   #1  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
setTmpData
В датасорсе формы есть временная таблица,
метод инит таблицы вызывается в ините формы,
инит таблицы возвращает курсор этой таблицы...

Затем пишу
TmpTable.setTmpData(TmpTable::Init()) - и в результате - ничего...
Не срабатыывает даже с обычной переменной временной таблицы..

Таблица в ините точно заполнилась - проверил.
Старый 18.01.2006, 11:02   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Где выполняется TmpTable::Init()?
__________________
Axapta v.3.0 sp5 kr2
Старый 18.01.2006, 11:42   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
TmpTable - датасорс?
Если да, то сделайте TmpTable_ds.cursor().setTmpData(TmpTable::Init())

На этой идее можно сделать обозреватель временных таблиц (работать будет естественно только из кода)
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 18.01.2006 в 11:46.
Старый 18.01.2006, 12:22   #4  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Цитата:
Где выполняется TmpTable::Init()?
в инит формы вызывается ... а вообще на сервере - если это трехзвенка ... а пока в двух звенке
Старый 18.01.2006, 12:27   #5  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Цитата:
Сообщение от sukhanchik
TmpTable - датасорс?
Если да, то сделайте TmpTable_ds.cursor().setTmpData(TmpTable::Init())

На этой идее можно сделать обозреватель временных таблиц (работать будет естественно только из кода)

не помогло .. наверно проблему надо искать где то еще
Старый 18.01.2006, 13:16   #6  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
если делаю таблицу реальной все работает... но этот вариант не подходит
Старый 18.01.2006, 13:37   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
вообще - по логике - должно все работать в такой последовательности (поправьте, если неверно понял исходные условия)
Имеем: Форму (к примеру MyForm) с датасорсом TmpTable, который ссылается на табличку TmpTable, объявленную как временная. На таблице TmpTable имеется статический метод Init, заполняющий эту таблицу и возвращающий ссылку на заполненную таблицу. Ссылка гарантированно заполняется (т.е. такой код
X++:
TmpTable t;
;
t = TmpTable::Init();
select firstonly count(recId) from t;
print t.recId;
pause;
заведомо показывает ненулевое количество записей).
Тогда в форме MyForm нужно перекрыть метод init формы (MyForm.init()) и после super() написать:
X++:
TmpTable_ds.cursor().setTmpData(TmpTable::Init())
Это не зависит от того где создана временная таблица. Просто в случае когда она создана на сервере - будет произведено копирование на клиента при вызове setTmpData(). При условии, конечно, что не потерян курсор.

Вот так не работает?
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 18.01.2006 в 13:40.
Старый 18.01.2006, 13:57   #8  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
вот так не работает(...

може быть я где то нарушил логику , но по моему все именно так
Старый 18.01.2006, 14:06   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Посмотрите пример
Вложения
Тип файла: xpo Project1.xpo (33.9 Кб, 206 просмотров)
__________________
Возможно сделать все. Вопрос времени
Старый 18.01.2006, 15:01   #10  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
спасибо за пример ... сделал такой же аналогичный по своей таблице - работает ...
вот только не работает все равно ... может проблема в том что данная таблица связывается с родительской как и остальные но реальные...
Старый 18.01.2006, 15:49   #11  
axaLearner is offline
axaLearner
Участник
 
88 / 17 (1) ++
Регистрация: 24.06.2004
Адрес: God knows
Попробуйте после setTmpData(TmpTable::Init()) написать TmpTable_ds.executeQuery();
Старый 18.01.2006, 17:08   #12  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Bars
может проблема в том что данная таблица связывается с родительской как и остальные но реальные...
Вообще-то связывать временные таблицы и постоянные - это неправильно, об этом уже неоднократно писалось, как впрочем и то, что это все равно сделать можно .
В таком случае - могу только пожелать получения успешных результатов, ибо тут результат непредсказуемый.
__________________
Возможно сделать все. Вопрос времени
Старый 18.01.2006, 17:20   #13  
Modus is offline
Modus
Участник
 
8 / 10 (1) +
Регистрация: 03.10.2005
Если временная таблица связывается с реальной, то заполнять ее лучше на active того датасорса, с которым она связана. При этом в качестве параметра Init нужно передать значение того поля на головной таблице, по которому оно связано с временной, и заполняться будут только те записи временной таблицы, которые относятся к этому значению. При этом, разумеется, joinsourse указывать не нужно. После заполнения временной таблицы вызываем executeQuery. Единственная загвоздка в том, что если Вы помещаете метод, заполняющий ее, на сервер, это подразумевает большие операции, так что будет притормаживать...
Старый 19.01.2006, 07:51   #14  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Цитата:
Сообщение от Modus
... если Вы помещаете метод, заполняющий ее, на сервер, это подразумевает большие операции, так что будет притормаживать...
А если нет... верменаая таблица создается на клиенте и на сервере ее не виднно, в 3-х уровневой конфигурации тогда не работает
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
SetTmpData vs = Pavlo AKA Panok DAX: Программирование 11 11.02.2009 18:11
setTmpData Eldar9x DAX: Программирование 6 27.11.2007 14:08
Дополнительные возможности временных таблиц: метод setTmpData vitk DAX: База знаний и проекты 1 19.06.2002 17:53
Что происходит с переменной табличного типа после выхода из функции? vitk DAX: Программирование 3 10.12.2001 15:34
HB_Tutorial_setTmpData - пример использования метода setTmpData vitk DAX: База знаний и проекты 0 10.12.2001 15:26

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

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

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