|
26.09.2003, 16:19 | #1 |
Участник
|
SetTmpData vs =
Добрый день!
объясните разницу между использованием оператора присваивания и оператора setTmpData при необходимости передачи данных из одной переменной типа временная таблица в другую такую же. Спасибо |
|
11.02.2009, 16:48 | #2 |
Участник
|
Если вкратце, то
setTmpData() создает копию данных. Грубо говоря, вместо одной таблицы, получаем две. В то время, как присвоение копии не создает. Это просто "переименование" переменной. Не две таблицы, а два "имени" одной и той же таблицы. |
|
11.02.2009, 16:56 | #3 |
Участник
|
Цитата:
Так в чем же разница между = и setTmpData ??? |
|
11.02.2009, 17:13 | #4 |
Участник
|
Даа, похоже разницы действительно почти нет
Чуть-чуть поэкспериментировал. Нашел только одно отличие. = сразу инициализирует переменную и текущими значениями исходной переменной, и ссылкой на ее файл setTmpData только ссылку на файл делает, то есть дополнительно нужно запрос сделать будет. Но это оочень несущественное отличие. Других пока не нашел.. |
|
11.02.2009, 17:23 | #5 |
Участник
|
это да, просто тогда непонятно, зачем рекомендуется использовать setTmpData()?
|
|
11.02.2009, 18:11 | #6 |
Banned
|
|
|
11.02.2009, 17:31 | #7 |
Участник
|
Да, перепутал с методом xRecord.setTmp()
Вообще-то, EVGL уже указал на различия. При использовании прямого присвоения обе переменные должны быть одного типа. Одна и та же временная таблица. Один объект AOT (один "класс") А при использовании xRecord.setTmpData() - не обязательно. Это могут быть разные таблицы AOT. Хотя, конечно, должны совпадать по структуре копируемые (синхронизируемые) данные. Т.е. попытка скопировать не существующее поле вызовет ошибку. |
|
11.02.2009, 17:32 | #8 |
----------------
|
а вы передайте свою временную таблицу в метод какого-нибудь классика и сделайте из него выборку после = и после setTmpData
|
|
|
За это сообщение автора поблагодарили: ivas (2). |