Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение значения поля только что вставляемой записи [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
Если кратко - получать передвставкой записи


Наверх

Титульная страница Поиск, карта сайта Написать письмо