![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение значения поля только что вставляемой записи [D5, IB5.x]
supersan © (2003-04-21 16:40:00)Здравствуйте, господа. Возможно, данный вопрос уже где-то звучал, но не нашел я. :-(
А именно: в обработчике BeforePost нужно получить значение поля для только что вставленной записи. Отображение таблицы - в TDBGrid (если б был, например, DBEdit, то просто взял бы его Text). Возможно такое в принципе? Если да, то как? Если нет - то все равно как (см. сабж)?
supersan (2003-04-21 18:25:00) [1]
> 3JIA9I CyKA © (21.04.03 18:10)
А если он изменит, например, поле R_Pens? Тогда, во-первых, уже нужен триггер BeforeUpdate, во-вторых, все равно остается проблема, а нужно ли пересчитывать?
3JIA9I CyKA (2003-04-21 18:10:00) [2]>>А может и сам ввести авторитарно значение DOPL и прога должна >>это принять.
Это случай, когда
new.dopl is not null
в противном случае считаем.
В чём сложность?
supersan (2003-04-21 18:06:00) [3]Ну вот, совсем про меня забыли :-(
supersan (2003-04-21 17:12:00) [4]
> Соловьев © (21.04.03 16:59)
> 3JIA9I CyKA © (21.04.03 17:00)
Во-первых, юзер может сам внести значение в это поле, поэетому желательно спросить, надо ли его рассчитать.
В-общем, предметная область, чувствую, без этого не договоримся. Расчет добавок к пенсиям. Есть таблица
CREATE TABLE TBPENS (
ID T_ID NOT NULL,
ID_CARD T_ID,
ID_VPENS T_ID,
R_PENS T_MONEY,
ZPL T_MONEY,
PERCENT T_PERCENT,
R_SUM T_MONEY,
DOPL T_MONEY,
NUM_RNV T_NUM,
DATE_RNV T_DATE,
DATE_NV T_DATE,
DATE_KV T_DATE,
DELETED T_DELETED COLLATE PXW_CYRL
);
Поле DOPL:=R_SUM-R_PENS, причем, если DOPL<PMIN (это значение из другой таблицы), то DOPL:=PMIN.
Причем юзер может изменить, например, какое-нибудь из полей R_SUM или R_PENS и захотеть пересчитать заново. Может ввести новую запись и захотеть посчитать. А может и сам ввести авторитарно значение DOPL и прога должна это принять. Т.е. задается вопрос:"Хотите пересчитать", в зависимости от ответа - считать или просто запостить.
Поля ZPL, PERCENT, R_SUM тоже рассчитываются, в зависимости от других таблиц, но с ними я справился. Нужно получить значение NEW.R_PENS, тогда будет мне в жизни щастье.
Есть идеи?
Zacho (2003-04-21 17:02:00) [5]Напиши подробнее, что тебе надо. Пока информации для ответа не достаточно.
3JIA9I CyKA (2003-04-21 17:00:00) [6]>>алгоритм непростой, в триггер не загнать,
>>или загнать с трудом
Поподробней, плз.
supersan (2003-04-21 16:59:00) [7]
> Anatoly Podgoretsky © (21.04.03 16:50)
Дак если была такая запись, так и вопроса бы не было
> 3JIA9I CyKA © (21.04.03 16:56)
А хоть примерно?
Соловьев (2003-04-21 16:59:00) [8]
> сразу предупрежу, что алгоритм непростой, в триггер не загнать,
> или загнать с трудом). Как?
UDF, но все же может и ХП или трггер справиться...
3JIA9I CyKA (2003-04-21 16:56:00) [9]Есть способ. Но он не простой! В форуме не опишешь. А если опишешь - хрен кто прочитает!
supersan (2003-04-21 16:53:00) [10]Извините, мне не надо значение автоинкрементного поля, получаемого при использовании генератора. Надо посчитать значение поля, используя значение другого поля (сразу предупрежу, что алгоритм непростой, в триггер не загнать, или загнать с трудом). Как?
Anatoly Podgoretsky (2003-04-21 16:50:00) [11]supersan © (21.04.03 16:40)
Такой записе еще нет, она будет после AfterPost
Johnmen (2003-04-21 16:48:00) [12]Есть такая штука, как генератор. Используя его можно заранее получить уникальный идентификатор записи...
Zacho (2003-04-21 16:46:00) [13]http://www.ibase.ru/devinfo/generator.htm
Если кратко - получать передвставкой записи