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

Получение нового Nrec при копировании записи

Добавлено: 03 май 2007, 14:27
Vik
Здравствуйте!
Как можно получить новый Nrec при копировании записи в таблицу?
Сейчас я делаю так: вставляю новую пустую запись, запоминаю Nrec удаляю эту запись. Копирую нужную запись и одновременно меняю Nrec на новый. По другому можно как-нибудь? Если нет, то как можно написать функцию, которая все это бы проворачивала? То есть, как ее сделать понятно, не понятно только, как нужную таблицу передать в нее в качестве параметра. Спасибо.

Добавлено: 03 май 2007, 14:43
m0p3e
Брр...
Если ты сделал Insert Current <TableName> то ты стоишь на этой самой записи. Т.е. <TableName>.nrec и есть искомый тобой nrec.
Или я не допонял вопроса...

Добавлено: 03 май 2007, 16:39
Den
А зачем вообще такие процедуры с запоминанием нреков..поведай плиз..
В качестве параметра таблицу в ВИПе не передать.

Добавлено: 04 май 2007, 06:03
san
может речь о копировании записей, типа такого?
pushpos(#table) // запоминаем старую запись
table.nrec := 0;
insert current table; // создаем новую с теми же значениями
poppos(#table) // возвращаемся на старую запись

Добавлено: 04 май 2007, 07:52
Hmyrii
А зачем вообще такие процедуры с запоминанием нреков..поведай плиз..
В качестве параметра таблицу в ВИПе не передать.
вы не правы, читайте лучше доку
наберите в поиске buffer и получите информацию для переваривания

Добавлено: 11 май 2007, 14:13
Vik
m0p3e писал(а):Брр...
Если ты сделал Insert Current <TableName> то ты стоишь на этой самой записи. Т.е. <TableName>.nrec и есть искомый тобой nrec.
Или я не допонял вопроса...
Допустим есть таблица Table1. В ней около 200 полей. Я встаю на определенную запись, которую мне надо скопировать изменив в ней всего одно поле. Если я делаю сразу просто Insert Current, то мне выдается ошибка, что нарушена уникальность ключа. Поэтому, я сначала создаю пустую новую запись, запоминаю nrec (nrecNew), удаляю пустую запись.. Далее встаю на нужную мне запись и делаю следующие:
Insert Current Table1
set Nrec := NrecNew,
User := 'новое значение' ;
sen писал(а): может речь о копировании записей, типа такого?
pushpos(#table) // запоминаем старую запись
table.nrec := 0;
insert current table; // создаем новую с теми же значениями
poppos(#table) // возвращаемся на старую запись
Спасибо, буду знать.. Только вот я не совсем понял. Nrec будет нулевым? Мне же его заполнить надо..

Добавлено: 11 май 2007, 14:55
m0p3e
Если ты делаешь nrec 0, то БД сама сгенерит новый. Тебе останется его только взять после Insert Current;

Добавлено: 14 май 2007, 11:02
Vik
Большое спасибо!!!