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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

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

Сообщение Vik »

Здравствуйте!
Как можно получить новый Nrec при копировании записи в таблицу?
Сейчас я делаю так: вставляю новую пустую запись, запоминаю Nrec удаляю эту запись. Копирую нужную запись и одновременно меняю Nrec на новый. По другому можно как-нибудь? Если нет, то как можно написать функцию, которая все это бы проворачивала? То есть, как ее сделать понятно, не понятно только, как нужную таблицу передать в нее в качестве параметра. Спасибо.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Брр...
Если ты сделал Insert Current <TableName> то ты стоишь на этой самой записи. Т.е. <TableName>.nrec и есть искомый тобой nrec.
Или я не допонял вопроса...
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

А зачем вообще такие процедуры с запоминанием нреков..поведай плиз..
В качестве параметра таблицу в ВИПе не передать.
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

может речь о копировании записей, типа такого?
pushpos(#table) // запоминаем старую запись
table.nrec := 0;
insert current table; // создаем новую с теми же значениями
poppos(#table) // возвращаемся на старую запись
Hmyrii
Постоянный гость
Сообщения: 62
Зарегистрирован: 07 июн 2006, 08:23

Сообщение Hmyrii »

А зачем вообще такие процедуры с запоминанием нреков..поведай плиз..
В качестве параметра таблицу в ВИПе не передать.
вы не правы, читайте лучше доку
наберите в поиске buffer и получите информацию для переваривания
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение 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 будет нулевым? Мне же его заполнить надо..
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Если ты делаешь nrec 0, то БД сама сгенерит новый. Тебе останется его только взять после Insert Current;
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Большое спасибо!!!
Ответить