Обновление данных в browse
Модераторы: m0p3e, edward_K, Модераторы
Re: Обновление данных в browse
если меняю запрос - то пишет, что нужен ключ cmatpropusk для таблицы spmatpropusk
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Обновление данных в browse
Значит нужно добавить такой ключ
Пока, воспользуйтесь хинтом (noindex)
Пока, воспользуйтесь хинтом (noindex)
Re: Обновление данных в browse
спасибо большое за помощь! наконец-то стали правильно отображаться привязанные данные! подскажите еще, пожалуйста, как правильно передавать данные из одного интерфейса в другой? т.е. как при попытке вставки записи в привязанном фейсе получить тип накладной из основного?
Re: Обновление данных в browse
у меня не получается избежать дублирования ключа:( Если с нуля заполняю таблицу строчками, всё отлично. Если закрываю свой интерфейс и потом загружаю заново- новые строчки уже не добавляются:(
вставку делаю так:
При инициализации очистку делаю
вставку делаю так:
Код: Выделить всё
cmInsertRecord:{
Case (CurTable) Of
#matpropusk:{
ResetTableSpec();
insert current matpropusk;
_loop Pick Where ((22==Pick.wList))
{
If GetFirst KatSopr Where ((Pick.cRec==KatSopr.nrec)) = tsOk
{
spmatpropusk.npp:= GetSpPropuskNppNext(matpropusk.nrec);
spmatpropusk.ckatsopr:=pick.crec;
spmatpropusk.cmatpropusk:=matpropusk.nrec;
insert current spmatpropusk;
ClearBuffer (#spmatpropusk);
delete all pick;
};
};
rescanpanel(#spmatpropusk);
}
end;
}
Код: Выделить всё
Cminit: {
delete all pick;
};
Re: Обновление данных в browse
clearbuffer делается перед заполнением записи!
Код: Выделить всё
Назначение
Очищает буфер записей для таблицы iTable с записью в буфер текущих ограничений на таблицу.
Описание
procedure ClearBuffer(iTable: integer);
Параметры
iTable: integer - номер таблицы.
Re: Обновление данных в browse
я именно так и думала, но если ставлю его до вставки, то вылетает ошибка при компиляции : нет такой функции, поля или метода
Re: Обновление данных в browse
Должно быть так и никак иначе:Marisha_P писал(а):я именно так и думала, но если ставлю его до вставки, то вылетает ошибка при компиляции : нет такой функции, поля или метода
Код: Выделить всё
ClearBuffer (#spmatpropusk); //или ClearBuffer (tnspmatpropusk);
spmatpropusk.npp:= GetSpPropuskNppNext(matpropusk.nrec);
spmatpropusk.ckatsopr:=pick.crec;
spmatpropusk.cmatpropusk:=matpropusk.nrec;
insert current spmatpropusk;
Re: Обновление данных в browse
Заработало! Спасибо огромное:) как находясь на строчке вспомогательного интерфейса получить nrec позиции из главного?
Re: Обновление данных в browse
Опять проблема с обновлением данных... На вкладке хочу обработать событие
Чтобы при возврате в основной browse эти данные отобразились. Он как раз построен по таблице matpropusk. Но обновления не происходит при вовзрате на строку. Надо с ней уйти и только потом..Как сделать обновление сразу по возврату? данные в табличку записывают еще при нахождении на вкладке..
Код: Выделить всё
cmDefault:{
matpropusk.ctranspr:=transp.nrec;
matpropusk.CMARPUNKTPR:=marpunkt.nrec;
matpropusk.CMARPUNKTPR1:=marpunkt1.nrec;
if (matpropusk.ctidkpr=201 or matpropusk.ctidkpr=521 or matpropusk.ctidkpr=600 or matpropusk.ctidkpr=602)
then matpropusk.CEXPEDITORDOVPR:=dovfio.nrec
else matpropusk.CEXPEDITORVODPR:=kndriver.nrec;
update current matpropusk;
rereadrecord(#matpropusk);
}
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Обновление данных в browse
rereadrecord(#matpropusk); должно быть не в дочернем фейсе, а в основном после вызова дочернего. В дочке хватит ReScanPanel(#matpropusk) - это чутка быстрее.
Re: Обновление данных в browse
Код: Выделить всё
cmChangeTabbedSheetFormat:{
ResetTableSpec();
rereadrecord(#matpropusk);
}
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Обновление данных в browse
а. у вас встроенный. Тогда нужно связывать события и запускать из дочки. В основном тогда в событии rereadrecords.
Самое простое отправить Notify в дочке а в родителе обработать cmNotify - но так не правильно .
сложнее завязать события
чутка сложнее. чтобы обмен был двухстороний. Для этого нужен дополнительный объект который бы юзался и там и там и связывался и там и там.
Самое простое отправить Notify в дочке а в родителе обработать cmNotify - но так не правильно .
Код: Выделить всё
в дочке
Notify(cmTableChanged, word(26009)); // укажите номер вашей таблы или неиспользуемый
в родителе
cmTableChanged:
{ if (word(GetNotificationInfoPtr) = 26009)
{ ReReadRecord(#table)
}
}
Код: Выделить всё
в родителе
procedure OnDataChanged;
{ ReReadRecord(#table)
} // procedure OnDataChanged
в cmInit
BindEvent(OnDataChanged, DCN.OnDataChanged);
в vih дочки
event procedure OnDataChanged;
в записи данных
OnDataChanged;