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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2003, 16:19   #1  
Pavlo AKA Panok is offline
Pavlo AKA Panok
Участник
 
64 / 10 (1) +
Регистрация: 01.05.2002
Адрес: Москва
SetTmpData vs =
Добрый день!

объясните разницу между использованием оператора присваивания и оператора setTmpData при необходимости передачи данных из одной переменной типа временная таблица в другую такую же.

Спасибо
Старый 11.02.2009, 16:48   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если вкратце, то

setTmpData() создает копию данных. Грубо говоря, вместо одной таблицы, получаем две.

В то время, как присвоение копии не создает. Это просто "переименование" переменной. Не две таблицы, а два "имени" одной и той же таблицы.
Старый 11.02.2009, 16:56   #3  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если вкратце, то

setTmpData() создает копию данных. Грубо говоря, вместо одной таблицы, получаем две.

В то время, как присвоение копии не создает. Это просто "переименование" переменной. Не две таблицы, а два "имени" одной и той же таблицы.
Нет, я тоже так думал долгое время ) никакой копии setTmpData не создает, после использования setTmpData 2-ая табличная переменная обращается к тому же набору данных что и 1-ая, т.е. теперь если мы что-то обновляем/добавляем/удаляем для 2-ой табличной переменной, эти изменения будут и в 1-ой. Как я понял, чтоб получить 2-ой НАБОР ДАННЫХ нужно заново делать insert();....
Так в чем же разница между = и setTmpData ???
Старый 11.02.2009, 17:13   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Даа, похоже разницы действительно почти нет
Чуть-чуть поэкспериментировал.
Нашел только одно отличие.

= сразу инициализирует переменную и текущими значениями исходной переменной, и ссылкой на ее файл

setTmpData только ссылку на файл делает, то есть дополнительно нужно запрос сделать будет.

Но это оочень несущественное отличие.

Других пока не нашел..
Старый 11.02.2009, 17:23   #5  
Jackally is offline
Jackally
Участник
 
20 / 14 (1) ++
Регистрация: 08.08.2006
это да, просто тогда непонятно, зачем рекомендуется использовать setTmpData()?
Старый 11.02.2009, 18:11   #6  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Но это оочень несущественное отличие.
Ну, это смотря как к этому относиться.
Это как передача значения по ссылке и по значению: разница, конечно, небольшая, но существенная.
Старый 11.02.2009, 17:31   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Да, перепутал с методом xRecord.setTmp()

Вообще-то, EVGL уже указал на различия.

При использовании прямого присвоения обе переменные должны быть одного типа. Одна и та же временная таблица. Один объект AOT (один "класс")

А при использовании xRecord.setTmpData() - не обязательно. Это могут быть разные таблицы AOT. Хотя, конечно, должны совпадать по структуре копируемые (синхронизируемые) данные. Т.е. попытка скопировать не существующее поле вызовет ошибку.
Старый 11.02.2009, 17:32   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
а вы передайте свою временную таблицу в метод какого-нибудь классика и сделайте из него выборку после = и после setTmpData
За это сообщение автора поблагодарили: ivas (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
setTmpData Eldar9x DAX: Программирование 6 27.11.2007 14:08
setTmpData Bars DAX: Функционал 13 19.01.2006 07:51
Дополнительные возможности временных таблиц: метод 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, время: 19:34.