Форум: "Базы";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
ВнизПолучение значения поля только что вставляемой записи Найти похожие ветки
← →
supersan (2003-04-21 16:40) [0]Здравствуйте, господа. Возможно, данный вопрос уже где-то звучал, но не нашел я. :-(
А именно: в обработчике BeforePost нужно получить значение поля для только что вставленной записи. Отображение таблицы - в TDBGrid (если б был, например, DBEdit, то просто взял бы его Text). Возможно такое в принципе? Если да, то как? Если нет - то все равно как (см. сабж)?
← →
Zacho (2003-04-21 16:46) [1]http://www.ibase.ru/devinfo/generator.htm
Если кратко - получать перед вставкой записи
← →
Johnmen (2003-04-21 16:48) [2]Есть такая штука, как генератор. Используя его можно заранее получить уникальный идентификатор записи...
← →
Anatoly Podgoretsky (2003-04-21 16:50) [3]supersan © (21.04.03 16:40)
Такой записе еще нет, она будет после AfterPost
← →
supersan (2003-04-21 16:53) [4]Извините, мне не надо значение автоинкрементного поля, получаемого при использовании генератора. Надо посчитать значение поля, используя значение другого поля (сразу предупрежу, что алгоритм непростой, в триггер не загнать, или загнать с трудом). Как?
← →
3JIA9I CyKA (2003-04-21 16:56) [5]Есть способ. Но он не простой! В форуме не опишешь. А если опишешь - хрен кто прочитает!
← →
supersan (2003-04-21 16:59) [6]
> Anatoly Podgoretsky © (21.04.03 16:50)
Дак если была такая запись, так и вопроса бы не было
> 3JIA9I CyKA © (21.04.03 16:56)
А хоть примерно?
← →
Соловьев (2003-04-21 16:59) [7]
> сразу предупрежу, что алгоритм непростой, в триггер не загнать,
> или загнать с трудом). Как?
UDF, но все же может и ХП или трггер справиться...
← →
3JIA9I CyKA (2003-04-21 17:00) [8]>>алгоритм непростой, в триггер не загнать,
>>или загнать с трудом
Поподробней, плз.
← →
Zacho (2003-04-21 17:02) [9]Напиши подробнее, что тебе надо. Пока информации для ответа не достаточно.
← →
supersan (2003-04-21 17:12) [10]
> Соловьев © (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, тогда будет мне в жизни щастье.
Есть идеи?
← →
supersan (2003-04-21 18:06) [11]Ну вот, совсем про меня забыли :-(
← →
3JIA9I CyKA (2003-04-21 18:10) [12]>>А может и сам ввести авторитарно значение DOPL и прога должна >>это принять.
Это случай, когда
new.dopl is not null
в противном случае считаем.
В чём сложность?
← →
supersan (2003-04-21 18:25) [13]
> 3JIA9I CyKA © (21.04.03 18:10)
А если он изменит, например, поле R_Pens? Тогда, во-первых, уже нужен триггер BeforeUpdate, во-вторых, все равно остается проблема, а нужно ли пересчитывать?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c