как быть тут...

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

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

Ответить
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

как быть тут...

Сообщение Den »

Привет !
Возникла необходимость подправить галактический интерфейс, а именно, отобразить в browse значения внешних атрибутов...
Было :
.....
From
KatSopr(KATSOPR02),
KatOrg(ReadOnly),
Synonym KatOrg KatOrg2(ReadOnly),
KlVal(ReadOnly),
UserTune(ReadOnly)
Where
((
TypeSoprIndKontr == KatSopr.VidSopr and
KatSopr.cOrgBase == KatOrg.NRec and
KatSopr.cValut == KlVal.NRec and
UserName == UserTune.OwnName
))
..
Browse
Panel pnKatSopr
table KatSopr;
Browse brKatSopr
table KatSopr
fields
KatOrg.Name
KatSopr.dSopr
KatSopr.Summa
KatSopr.SumVal
KlVal.SimvolV
VidDolg 'Вид долга' ('Вид задолженос
end; // browse
...

Добавил я в подцепки
...
and katsopr.nrec==attrval.crec
and 1109==attrval.wtable
and attrval.cattrnam==attrnam.nrec
and (1109=attrnam.WTABLE
and 'Группы ДО'=locase(attrnam.name))
...
в browse
..
attrval.VSTRING
..
Ну и в обработчике событий в событии Cmpick
следующее :
{
#attrval.vstring:
{
if (Runinterface(Getgrdo,cc1,nazv)<>Cmcancel)
then
{
if getfirst attrval=tsok
then
{
if attrval.vstring<>nazv
{
update current attrval
set
attrval.vstring:=nazv;
}
}
else
{
insert attrval set
attrval.wtable :=1109,
attrval.crec :=katsopr.nrec,
attrval.cattrnam:=40019E0E77E80747h,
attrval.vstring :=nazv;
}
Rescanpanel(#katsopr);
}

Все ничего, но по нажатию delete, если стоишь в поле attrval.vstring, и при дальнейшей смене позиции валятся ошибки :

1.Попытка записи недопустимого значения в таблицу 1109 (katsopr) (nrec=0).Операция отменена.
2. Код ошибки 203 табл 1109..

Может кто даст совет из-за чего такая штука происходит.
Может из-за того, что корневая таблица katsopr, и невозможно по delete удалить запись из attrval таким образом ??
Описал событие отдельно для attrval.vstring cmDelonprotect, но результат тот же.. :`( %
khlybov
Сообщения: 9
Зарегистрирован: 29 мар 2005, 17:49

Re: как быть тут...

Сообщение khlybov »

При надатии клавиши Del на поле не корневой таблицы происходит обнуление поля связки, в данном случае KatSopr.NRec. Кстати, DelOnProtect для этого и сделан. Тебе надо перехватить это событие и в нем полю attrval.vstring присвоить пустую строку, после чего вызвать Update для attrval. Ну или удалить эту запись совсем. Зависит от того что тебе нужно. Или не обрабатывать клавишу Del совсем (убрать ее из status-line). Но сделать обработчик на Update все равно придется сделать, если хочешь менять поля внешних аттрибутов.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: как быть тут...

Сообщение Den »

При нажатии клавиши Del происходит обнуление поля связки.Но по всей видимости, транзакция (с последующим update) происходит только при смене позиции - Cmcheckfield.Если я перехватил событие и обработал его по своему, но не внес коррективы во второе, то происходит по всей видимости стандартная обработка Cmcheckfield.Где бы ее найти только(стандартную обработку), что там написано, и почему все равно выдается первой сообщение, ведь он не должен знать, что katsopr.nrec меняется..в моем случае. ??? ???
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: как быть тут...

Сообщение m0p3e »

Может малой кровью? Конфигуратором?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: как быть тут...

Сообщение Den »

Да, с атрибутом вроде получается, но хотелось бы понять до конца где неувязка в первом варианте..
Ответить