Страница 1 из 1

Помогите cкопировать запись

Добавлено: 20 мар 2007, 20:24
Sytin
Хочу скопировать запись в таблице, например KatSopr, со всеми полями. Есть ли возможность как-нибудь сделать копию всей записи не присваивая все поля таблицы KatSopr при insert???

Добавлено: 20 мар 2007, 20:55
m0p3e
type tKatSopr = record as table KatSopr;
var
BufKatSopr : tKatSopr;

begin
BufKatSopr := tKatSopr ( KatSopr.buffer );
KatSopr.buffer := type$KatSopr ( BufKatSopr );
KatSopr.nrec := 0;
Insert Current KatSopr;
end

Как-то так

Добавлено: 20 мар 2007, 21:15
Sytin
Спасибо огромное. Столько можно теперь времени экономить :grin:

Добавлено: 21 мар 2007, 06:29
Алексей
Я обычно просто позиционируюсь на запись.
Далее меняю что-то, что надо (какие-то поля).
Обнуляю нрек
Делаю insert

Добавлено: 21 мар 2007, 12:23
m0p3e
Кстати вот описание из asdk

Код: Выделить всё

Работа с таблицами
Для работы с текущей записью таблицы можно использовать выражение вида: 

<имя таблицы>".buffer" 

(например, katos.buffer). Поле Buffer является полем структурного типа который имеет имя вида: "type$"<имя таблицы>. (например, type$katos). 

Buffer - фиктивное поле и не является полем физической таблицы. 

Благодаря полю buffer становится возможным присвоение текущей записи таблицы. 

При этом необходимо всегда явно задавать преобразование типа. 

Например, 

type TMyTable = record as table mytable;
var table1 : TMyTable;
  ...
  mytable.buffer := mykatos; // ошибка
  mytable.buffer := type$mytable(mykatos); // правильно
  insert current mytable;
  ...

также возможна обратная операция, получения текущей записи таблицы. Например, 

type TMyTable = record as table mytable;
var table1 : TMyTable;
  ...
  table1 := mytable.buffer; // ошибка
  table1 := TMyTable(mytable.buffer); // правильно
  ...

Поля структуры, соответствующие полям, которые отсутствуют в текущей выборке, становятся невалидными. Если производится присвоение значения структуры текущей записи в таблице, то реально производится присвоение только тем полям таблицы, для которых соответствующие поля структуры валидны. 

Структуры могут передаваться в процедуры и функции как параметры. Передача структур возможна как по значению, так и по ссылке. Допустимо возвращать структуры как результат функции. Допустимо передавать структуры как параметры интерфейсов.