26.09.2003, 16:19 | #1 |
Участник
|
SetTmpData vs =
Добрый день!
объясните разницу между использованием оператора присваивания и оператора setTmpData при необходимости передачи данных из одной переменной типа временная таблица в другую такую же. Спасибо |
|
26.09.2003, 18:36 | #2 |
Banned
|
tmpTable1 = tmpTable2 - это присвоение курсора, так сказать, по ссылке. Обе переменные после такого присвоения ссылаются на один и тот же класс.
Пример: PHP код:
Пример: PHP код:
|
|
26.09.2003, 20:39 | #3 |
Участник
|
Цитата:
Изначально опубликовано EVGL
После же tmpTable1.setTmpData(tmpTable2) переменная tmpTable1 остается отдельным курсором, но запрашивающим тот же блок данных (по-видимому, тот же файл на диске), что и tmpTable2. См документацию. Ключевое слово "Temporary tables" Temporary tables are declared just like any other variable, and have the following characteristics:
|
|
26.09.2003, 20:57 | #4 |
Участник
|
EVGL, а может у тебя правильная терминология...
см. http://technet.navision.com/default....rch=settmpdata Может скажешь где ты видел насчет курсоров во временных таблицах? Про временные таблицы полезно поглядеть на том же technet'е http://technet.navision.com/default....rch=settmpdata |
|
11.02.2009, 16:23 | #5 |
Участник
|
Все-таки неясна разница, есть ли какой-нибудь пример из жизни? как ни крути результат один и тот же у этих операторов.....
|
|
11.02.2009, 16:48 | #6 |
Участник
|
Если вкратце, то
setTmpData() создает копию данных. Грубо говоря, вместо одной таблицы, получаем две. В то время, как присвоение копии не создает. Это просто "переименование" переменной. Не две таблицы, а два "имени" одной и той же таблицы. |
|
11.02.2009, 16:56 | #7 |
Участник
|
Цитата:
Так в чем же разница между = и setTmpData ??? |
|
11.02.2009, 17:13 | #8 |
Участник
|
Даа, похоже разницы действительно почти нет
Чуть-чуть поэкспериментировал. Нашел только одно отличие. = сразу инициализирует переменную и текущими значениями исходной переменной, и ссылкой на ее файл setTmpData только ссылку на файл делает, то есть дополнительно нужно запрос сделать будет. Но это оочень несущественное отличие. Других пока не нашел.. |
|
11.02.2009, 17:23 | #9 |
Участник
|
это да, просто тогда непонятно, зачем рекомендуется использовать setTmpData()?
|
|
11.02.2009, 17:31 | #10 |
Участник
|
Да, перепутал с методом xRecord.setTmp()
Вообще-то, EVGL уже указал на различия. При использовании прямого присвоения обе переменные должны быть одного типа. Одна и та же временная таблица. Один объект AOT (один "класс") А при использовании xRecord.setTmpData() - не обязательно. Это могут быть разные таблицы AOT. Хотя, конечно, должны совпадать по структуре копируемые (синхронизируемые) данные. Т.е. попытка скопировать не существующее поле вызовет ошибку. |
|
11.02.2009, 17:32 | #11 |
----------------
|
а вы передайте свою временную таблицу в метод какого-нибудь классика и сделайте из него выборку после = и после setTmpData
|
|
|
За это сообщение автора поблагодарили: ivas (2). |
11.02.2009, 18:11 | #12 |
Banned
|
|
|