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

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

Получение номера из БД в программу [D7]


Страницы:   1 2

Scorpio ©   (2006-08-02 18:08:00) 

Добрый день мастера. Подскажите такую вещь.
Произвожу запись в табицу, тригером получаю порядковый номер при записи. Как мне в момент записи получить этот номер в программе., он мне необходим для протоколирования действий., чтобы знать где, и что он вносил, данные вношу по пинципу (ФИО (вношу из переменной) + № введенной карточки (которую только ввели)), это одно поле типа VARCHAR2(60).
Отдельно создавать поля не могу, довольствуюсь тем что есть.

Номер получаю из такого тригера:


CREATE OR REPLACE TRIGGER "LI_MIG" BEFORE INSERT ON "KART" FOR EACH ROW
DECLARE
nKolNi NUMBER(17);
nLi NUMBER;
BEGIN
IF USER='user' THEN
nLi:=:NEW.NI;
SELECT MIG_K.nextval
INTO :NEW.NI
FROM dual;
select sysdate into :NEW.DATE_
from dual;
INSERT INTO "user"."LI_M"(LI_NI,MIG_NI) VALUES (nLi,:NEW.NI);
END IF;
END;


А если перефрозировать иначе. Есть миграционные посты, они вносят данные о людях. На каждом посту по 5-8 компов. Регистрируется миграционная карточка. Занесли данные на человека. Программа должна отпечатать эту карточку вместе с номером полученным от сиквенции, на каждом посту своя сиквенция, со своим специфическим кодом. Как мне распечатать этот номер ??


Scorpio   (2006-08-02 18:40:00) [21]


> PS Протоколирование, имхо, лучше делать средствами триггеров
> AFTER на сервере. Тогда мимо проги ничего не введут.


Мне удобней на програмном уровне вести протоколирование, в зависимости от разных форм, я вношу совершенно разные данные.


Reindeer Moss Eater   (2006-08-02 18:39:00) [22]

Для внесения даты и времени на момент создания карточки.  Человеку дается 24 часа на регистрацию в паспортном столе.

А одним селектом нельзя дать человеку 24 часа на регистрацию в паспортном столе?
:)


Scorpio   (2006-08-02 18:37:00) [23]


> nLi:=:NEW.NI;
> INSERT INTO "user"."LI_M"(LI_NI,MIG_NI) VALUES (nLi,:NEW.
> NI);
>

Это для свзи м/у таблицами, 1 ко многим.


> SELECT MIG_K.nextval
> INTO :NEW.NI
> FROM dual;
>
> select sysdate into :NEW.DATE_
> from dual;


Для внесения даты и времени на момент создания карточки.  Человеку дается 24 часа на регистрацию в паспортном столе.


Reindeer Moss Eater   (2006-08-02 18:18:00) [24]

SELECT MIG_K.nextval
INTO :NEW.NI
FROM dual;

select sysdate into :NEW.DATE_
from dual;


А это спецом для того, чтобы сервер трудился как можно больше?
:)


Desdechado   (2006-08-02 18:16:00) [25]

Перезапросить только что введенные данные по уникальной комбинации полей.

PS Протоколирование, имхо, лучше делать средствами триггеров AFTER на сервере. Тогда мимо проги ничего не введут.
PPS странная логика
nLi:= :NEW.NI;
INSERT INTO "user"."LI_M"(LI_NI,MIG_NI) VALUES ( nLi, :NEW.NI);


Reindeer Moss Eater   (2006-08-02 18:13:00) [26]

он мне необходим для протоколирования действий., чтобы знать где, и что он вносил, данные вношу по пинципу (ФИО (вношу из переменной) + № введенной карточки (которую только ввели)), это одно поле типа VARCHAR2(60).

А протоколировать прямо на сервере нельзя?


Страницы:   1 2

Наверх

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