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

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

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

Ответить
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

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

Сообщение 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);      
YuryN
Посетитель
Сообщения: 32
Зарегистрирован: 28 ноя 2013, 12:03
Откуда: Беларусь, Гомель

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

Сообщение YuryN »

Лучше попробуйте создать вьюху и потом в цикле делайте вставку

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

Как-то так...
YuryN
Посетитель
Сообщения: 32
Зарегистрирован: 28 ноя 2013, 12:03
Откуда: Беларусь, Гомель

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

Сообщение 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;
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

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

Сообщение 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)

);
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение 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);  
Буфер нужно чистить.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

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

Сообщение Marisha_P »

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