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

Добавление данных в таблицу

Добавлено: 23 дек 2014, 13:53
Marisha_P
Подскажите, почему не добавляются данные в таблицу. Выбор данных осуществляется через интерфейс выбора, выбранные накладные хранятся в pick (22).Добавляется в таблицу только одна строчка, хотя инсертом помечаю несколько, и через message выбор отображается. Что я делаю неправильно?

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

   If GetFirst Pick Where ((Word(22)==Pick.wList))=TsOk
                Do
           { GetFirst KatSopr Where ((Pick.cRec==KatSopr.nrec));
                set spmatpropusk.cmatpropusk:=matpropusk.nrec;
                set spmatpropusk.ckatsopr:=pick.crec;
                set spmatpropusk.ctidksp:=matpropusk.ctidkpr;
            Message(spmatpropusk.ckatsopr);
            insert current spmatpropusk;
           } While GetNext Pick Where ((Word(22)==Pick.wList))=TsOk  ;
           rescanpanel(#spmatpropusk);      

Re: Добавление данных в таблицу

Добавлено: 23 дек 2014, 14:55
YuryN
Лучше попробуйте создать вьюху и потом в цикле делайте вставку

.Create View MySopr
From KatSopr(readonly)
Where (( Word(22) /== Pick.wList and KatSopr.Nrec /== Pick.cRec ));
!
.{table 'Mysopr'
......
.}

Как-то так...

Re: Добавление данных в таблицу

Добавлено: 23 дек 2014, 15:02
YuryN
Я кажется лоханулся, попробуйте так:

If GetFirst KatSopr Where ((Word(22)==Pick.wList and KatSopr.nrec/==Pick.cRec))=TsOk
Do
{ set spmatpropusk.cmatpropusk:=matpropusk.nrec;
set spmatpropusk.ckatsopr:=pick.crec;
set spmatpropusk.ctidksp:=matpropusk.ctidkpr;
Message(spmatpropusk.ckatsopr);
insert current spmatpropusk;
} While GetNext KatSopr Where ((Word(22)==Pick.wList and KatSopr.nrec/==Pick.cRec))=TsOk;

Re: Добавление данных в таблицу

Добавлено: 23 дек 2014, 15:45
Marisha_P
всё равно одна:( и плюсом пишет дублирование ключа для таблицы spmatpropusk. Не понимаю почему.. Таблицу создавала так:

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

Create Table s_prop.spmatpropusk "Спецификация иатериальных пропусков"
Using "spmatpr.dat"
With Table_Code = 31966
(
   #include firstrec.gd
   ctidksp      : word     "Тип документа",
   ckatsopr     : comp     "Ссылка на накладную",
   cmatpropusk  : comp     "Ссылка на мат.пропуск"
    )
  with index
( ind1 = NREC(Unique, Surrogate,journal)

);

Re: Добавление данных в таблицу

Добавлено: 23 дек 2014, 16:45
m0p3e

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

  _loop Pick Where ((22==Pick.wList))
   {
    If GetFirst KatSopr Where ((Pick.cRec==KatSopr.nrec)) = tsOk
     {
      ClearBuffer(tnSpMatPropusk);
        spmatpropusk.cmatpropusk:=matpropusk.nrec;
        spmatpropusk.ckatsopr:=pick.crec;
        spmatpropusk.ctidksp:=matpropusk.ctidkpr;
        Message(spmatpropusk.ckatsopr);
      insert current spmatpropusk;
     };
   };
  rescanpanel(#spmatpropusk);  
Буфер нужно чистить.

Re: Добавление данных в таблицу

Добавлено: 24 дек 2014, 08:59
Marisha_P
спасибо!