tablerevert в CursorAdapter | |
---|---|
kuru |
когда в beforeupdate возвращаешь .f. или в afterupdate lReturn приравниваешь .f., то foxpro ругается: "execution was canceled by the user" - как можно сделать молчаливый tablerevert?
|
Re: tablerevert в CursorAdapter | |
---|---|
JS Сообщений: 12264 Откуда: Эстония Дата регистрации: 04.09.2000 |
А можно чуть поподробнее... Как создан СА - как отдельный объект, как объект в DataEnvironment классе и так далее.
------------------ Knowledge is better than ignorance! Website: juri.foxhelp.eu |
Re: tablerevert в CursorAdapter | |
---|---|
kuru |
CA создан как объект и используется как триггер (изменения делаются в grid)
|
Re: tablerevert в CursorAdapter | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, kuru!
Ты только всё ещё больше запутал Приведи простой пример (грид не обязателен, простым Replace-ом над курсором обойдись). Что-то в этом духе. И pls не поленись расписать какова конечная цель - что ты пытаешься решить (может быть нужно просто с другой стороны пойти?) Вот тебе даже шаблон:
------------------ WBR, Igor |
Re: tablerevert в CursorAdapter | |
---|---|
kuru |
суть такая: использовать CA, как замена триггерам. замена потому что CA позволяет в after(i/u/d) сделать изменения в таблице, например: по первым заведенным 2ум полям, идет обращение на сервер, где в результате неких колькуляций возвращается значение в 3ье (нередактируемое) поле - как раз путем replace в afterinsert. вообщем нужно делать изменения таблицы в триггере для чего и хочу юзать CA
procedure afterinsert sqlquery ("calc_value @f1 = " + trans(@f1) + " ,@f2=" + trans(@f2), "CALC") replace (f3, CALC.value) endprod а проблема в том что я не могу сделать tablerevert() в after(i/u/d), если что-то меня не устраивает в первых двух полях: procedure afterinsert sqlquery ("calc_value @f1 = " + trans(@f1) + " ,@f2=" + trans(@f2), "CALC") if (reccount() = 0) tablerevert (.f.) && здесь будет ругаться && если lReturn установить в .f. будет ругаться тоже. else replace (f3, CALC.value) end endprod хочу чтоб не ругался! (метод Error переопределять для подавления ошибки - не хочу - а то потом другие ошибки не найду) |
Re: tablerevert в CursorAdapter | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, kuru!
Из хелпа к TableUpdate() Цитата:IMHO всё очень логично - это как если бы ты вносил изменения (без CA) в курсор, а он и НЕ СОХРАНЯЛ и ОТКАТЫВАЛ К СТАРОМУ одновременно! Это нелогично и IMHO даже вредно - если случилась ошибка сохранения, буфер должен оставаться неизменным! Чтобы можно было поправить скажем одно из полей и снова попытаться сохранить данные - а не потерять разом всё что там вводилось. P.S. Всё-же пример неполный - убери TableRevert() и потом посмотрим. P.P.S. для примера сделай всё на локальной таблице и без вызова ХП - просто по какому-нить условию меняй признак, причём не в After* обработчике, если это поле ДОЛЖНО попадать в итоге в базовую таблицу. Ибо в After имеет смысл трогать лишь те поля, которые не являются обновляемыми. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |