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

функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 15:40
Espada
Доброго дня, столкнулся с таким вопросом: необходимо импортировать данные из файла в спецификацию счета. раньше сталкивался с подобным, но там нужно было создать новую таблицу, там использовал:

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

...
NewSpstep.insert current spstep;
...
теперь же мне нужно записать в уже существующую. подскажите плиз есть ли способ записать? Спасибо

Re: функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 16:16
RAJAH
INSERT - вставка новой записи; UPDATE - редактирование существующей.

Re: функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 16:18
Espada
RAJAH писал(а):INSERT - вставка новой записи; UPDATE - редактирование существующей.
спасибо

Re: функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 17:59
Espada
RAJAH писал(а):INSERT - вставка новой записи; UPDATE - редактирование существующей.
по идее insert должен создавать новую запись в таблице spstep. а у меня ругается, мол дублируется запись spstep.nrec. не подскажете в чем может быть проблема?
Ошибка N 5/ Дублированное значение при уникальном ключе. В таблице Spstep повторяется значение поле NREC

Re: функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 18:07
m0p3e
Если в буфере уже существующая запись, то nrec необходимо принудительно занулить. Тогда он при вставке будет сгенерирован.

Re: функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 18:14
Espada
m0p3e писал(а):Если в буфере уже существующая запись, то nrec необходимо принудительно занулить. Тогда он при вставке будет сгенерирован.

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

if(NewSpstep.getfirst spstep = tsOk and NewSpstep.getfirst stepdoc = tsOk)
{
if(NewSpstep.Spstep.Nrec <> 0)
{
 Message(NewSpstep.Spstep.nrec)
NewSpstep.clearbuffer(NewSpstep.tNspstep);
NewSpstep.Spstep.NPP        :=    i;
NewSpstep.SPSTEP.CMCUSL     :=   Bnrec;
NewSpstep.SPSTEP.COTPED     :=   Enrec;
NewSpstep.SPSTEP.KOL        :=  _Kol;
NewSpstep.SPSTEP.KOLSKL     :=  _Kol;
NewSpstep.Spstep.CSTEPDOC   :=  NewSpstep.stepdoc.nrec;
NewSpstep.insert current spstep;
i := i + 1;
};
};
как я понял строчка clearebuffer отвечает за чистку?

Re: функция добавления строки в спецификацию

Добавлено: 16 окт 2017, 18:42
m0p3e
Все верно.