80 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 27
1

FRM-40735: POST-OUERY триггер вызвал необработанное ислючение ORA-01403

08.11.2008, 18:10. Показов 13292. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В oracle forms на форме у меня из списка выбирается операция и сответвено каждой операции убераются и появляются поля.Для этого я пременил тригер WHEN-LIST-CHANGED
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
IF :KU_OPERACIYA.OPER='Поступление' THEN
 
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_true);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_false);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_false);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUMA_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PERSTOIM', ENABLED, PROPERTY_true);
 
ELSE
 IF :KU_OPERACIYA.OPER='Выбытие' THEN
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_true);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_false);
 
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_true);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_true);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_false);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUMA_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PERSTOIM', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PRICHINA', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUM_PROD', ENABLED, PROPERTY_true);
ELSE
    IF :KU_OPERACIYA.OPER='Изменение стоимости' THEN
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_true);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_true);
 
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_false);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_false);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUMA_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PERSTOIM', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.IZM_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.IZM_SUM', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_STOI', ENABLED, PROPERTY_true);
ELSE
    IF :KU_OPERACIYA.OPER='Внутренее перемешение' THEN
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_false);
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_false);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZNOS', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_false);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_PODR', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_MOL', ENABLED, PROPERTY_true);
END IF;     
END IF; 
END IF;
END IF;


при заполнении все работает и при сохранении даные сохроняются.
Но при выполнении запроса к БД выдается ошибка

FRM-40735: POST-OUERY триггер вызвал необработанное ислючение ORA-01403
вот текст POST-OUERY

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
SELECT inve_nomer,per__stoi,sum_izn
INTO :KU_OPERACIYA.invent_nom,:KU_OPERACIYA.PERSTOIM,:KU_OPERACIYA.SUMA_IZN
FROM ku_inven_kart
WHERE id_kart=:KU_OPERACIYA.id_kart;
 
SELECT naim_prod
INTO :KU_OPERACIYA.PODR
FROM ku_katol_podr
WHERE Kod_podr=:KU_OPERACIYA.Kod_podrt;
 
SELECT fio
INTO :KU_OPERACIYA.MOL
FROM ku_mol
WHERE kod_mol=:KU_OPERACIYA.kod_mol;
 
 
SELECT naim_os
INTO :KU_OPERACIYA.NAIM
FROM ku_os
WHERE id_os=:KU_OPERACIYA.id_os;
 
IF :KU_OPERACIYA.OPER='Поступление' THEN
 
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_true);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_false);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_false);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUMA_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PERSTOIM', ENABLED, PROPERTY_true);
 
ELSE
 IF :KU_OPERACIYA.OPER='Выбытие' THEN
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_true);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_true);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_true);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_false);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUMA_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PERSTOIM', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PRICHINA', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUM_PROD', ENABLED, PROPERTY_true);
ELSE
    IF :KU_OPERACIYA.OPER='Изменение стоимости' THEN
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_true);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_true);
 
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_false);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_true);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_false);
SET_ITEM_PROPERTY('KU_OPERACIYA.SUMA_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.PERSTOIM', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.IZM_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_IZN', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.IZM_SUM', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_STOI', ENABLED, PROPERTY_true);
ELSE
    IF :KU_OPERACIYA.OPER='Внутренее перемешение' THEN
set_item_property('KU_OPERACIYA.NEW_STOI', visible, property_false);
set_item_property('KU_OPERACIYA.PERSTOIM', visible, property_false);
set_item_property('KU_OPERACIYA.SUMA_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZNOS', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.PRICHINA', visible, property_false);
set_item_property('KU_OPERACIYA.SUM_PROD', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_IZN', visible, property_false);
set_item_property('KU_OPERACIYA.IZM_SUM', visible, property_false);
set_item_property('KU_OPERACIYA.NEW_PODR', visible, property_true);
set_item_property('KU_OPERACIYA.NEW_MOL', visible, property_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_PODR', ENABLED, PROPERTY_true);
SET_ITEM_PROPERTY('KU_OPERACIYA.NEW_MOL', ENABLED, PROPERTY_true);
END IF;     
END IF; 
END IF;
END IF;
Вроде все правелно ктонибуть может сказать в чем дело??????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2008, 18:10
Ответы с готовыми решениями:

frm-40735, ora-04068 Помогите новичку!!!
Мне нужно добавить в таблицу один столбец, после того как я это делаю программа (в form builder...

ORA- 01403 Данные не найдены
Нужно при выборе людей с 20 отдела(таких людей 4) сделать надбавку к зарплате. Я пошарился по...

Появляется ошибка ORA-01403: no data found
Не могу понять, как может появляться эта ошибка при выполнении триггера , ведь данные есть....

Не работает триггер ora-00984
Здравствтуйте! Вобщем рассказываю ситуацию. Есть таблица Journal, в нее записываются данные о...

6
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
10.11.2008, 09:40 2
ORA-01403 - это значит, что один из запрсов не возвращает выбранных записей. Выход - использовать exception, для обработки этих ситуаций.
Например:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
BEGIN
 SELECT inve_nomer,per__stoi,sum_izn
 INTO :KU_OPERACIYA.invent_nom,:KU_OPERACIYA.PERSTOIM,:KU_OPERACIYA.SUMA_IZN
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart
EXCEPTION
 WHEN NO_DATA_FOUND 
  THEN 
   message('данных не найдено');//для контроля
   NULL;
END;
0
80 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 27
11.11.2008, 01:35  [ТС] 3
Спасибо воспользовался)
толька серовно непонятна почему он их невозрашает)))

Добавлено через 1 час 30 минут 15 секунд
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
BEGIN
SELECT inve_nomer,per__stoi,sum_izn
INTO :KU_OPERACIYA.invent_nom,:KU_OPERACIYA.PERSTOIM,:KU_OPERACIYA.SUMA_IZN
FROM ku_inven_kart
WHERE id_kart=:KU_OPERACIYA.id_kart;
EXCEPTION
WHEN NO_DATA_FOUND 
THEN 
:KU_OPERACIYA.invent_nom := NULL;
:KU_OPERACIYA.PERSTOIM := NULL;
:KU_OPERACIYA.SUMA_IZN := NULL;
END;
Добавлено через 3 часа 18 минут 20 секунд
я разабрался в чем проблема не получается выташить данные через другую таблицу падскажите как это сделать пожалуста?????МОя модель

Добавлено через 5 часов 23 минуты 30 секунд
Спасибо всем за помощь)
Оказывается надо было 2 блока делать а я один делал с двумя получается)))

Добавлено через 1 час 36 минут 40 секунд
Теперь проблема сохранением появилась(
КАк сделать что бы даные сохранялись толька в одной таблице ku_operaciya если в формсе у меня в модуле два блока соединены отнашением?
0
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
11.11.2008, 10:53 4
Цитата Сообщение от kulinar Посмотреть сообщение
Спасибо воспользовался)
тТеперь проблема сохранением появилась(
КАк сделать что бы даные сохранялись толька в одной таблице ku_operaciya если в формсе у меня в модуле два блока соединены отнашением?
Надо отменить изменения в том блоке, где не надо сохранять данные, а потом выполнить Commit_Form

Пример:
Код
 
Go_Block(<тот который не надо сохранять>);--активируем блок
Clear_Block(NO_VAlIDATE);--отменяем изменения в блоке
Commit_Form;--сохраняем остальное
0
80 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 27
11.11.2008, 14:07  [ТС] 5
В кнопке в тригере WHEN-BUTTON-PRESSED я написал:
Код
Go_Block('KU_INVEN_KART');--активируем блок
Clear_Block(NO_VAlIDATE);--отменяем изменения в блоке
Commit_Form;--сохраняем остальное
после нажатия на кнопку Вылетает сообшение сохранить данные я нажимаю да вылетает такая ошибка:
Код
FRM-40508: Ошибка ORACLE:  не в состоянии Вставить запись.
при нажатии shi +f1 :
Код
Оператор SQL в ошибке:
insert into ku_operaciya) values)
Код
Ошибка:
ORA-02291: нарушено ограничение целосности(KULINAR.SYS_C005289)-исходный ключ не найден.
Добавлено через 41 секунду
как это исправить или я не то делаю?
0
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
11.11.2008, 16:32 6
Если ты в блоке KU_INVEN_KART не изменяешь данные, то commit_form сохранит только измененные данные в блоке KU_OPERACIYA, т.е Clear_Block можно не использовать. На всякий случай, блоку KU_INVEN_KART, можно установить св-ва INSERT_ALLOWED, DELETE_ALLOWED, UPDATE_ALLOWED в FALSE.

З.Ы. Сдается мне, что ты как-то не так все это делаешь...%)
0
80 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 27
12.11.2008, 00:09  [ТС] 7
ЛАдна спасибо большое за помошь)

Добавлено через 5 часов 58 минут 28 секунд
короче все я разобрался я забыл еше несколка запросов написать для ключей
вот рабочий вариант:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT id_os
 INTO :KU_OPERACIYA.id_os
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
 SELECT inve_nomer,per__stoi,sum_izn
 INTO :KU_OPERACIYA.invent_nom,:KU_OPERACIYA.PERSTOIM,:KU_OPERACIYA.SUMA_IZN
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
 SELECT KOD_PODR
 INTO :KU_OPERACIYA.KOD_PODR
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
 SELECT kod_mol
 INTO :KU_OPERACIYA.kod_mol
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
  SELECT ku_katol_podr.naim_prod
  INTO :KU_OPERACIYA.PODR
  FROM ku_katol_podr
  WHERE Kod_podr=:KU_OPERACIYA.Kod_podr;
 
  SELECT fio
  INTO :KU_OPERACIYA.MOL
  FROM ku_mol
  WHERE kod_mol=:KU_OPERACIYA.kod_mol;
  
  SELECT naim_os
  INTO :KU_OPERACIYA.NAIM
  FROM ku_os
  WHERE id_os=:KU_OPERACIYA.id_os;
Огромное спасибо за помошь)

Добавлено через 1 минуту 28 секунд
короче все я разобрался я забыл еше несколка запросов написать для ключей
вот рабочий вариант:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT id_os
 INTO :KU_OPERACIYA.id_os
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
 SELECT inve_nomer,per__stoi,sum_izn
 INTO :KU_OPERACIYA.invent_nom,:KU_OPERACIYA.PERSTOIM,:KU_OPERACIYA.SUMA_IZN
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
 SELECT KOD_PODR
 INTO :KU_OPERACIYA.KOD_PODR
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
 SELECT kod_mol
 INTO :KU_OPERACIYA.kod_mol
 FROM ku_inven_kart
 WHERE id_kart=:KU_OPERACIYA.id_kart;
 
  SELECT ku_katol_podr.naim_prod
  INTO :KU_OPERACIYA.PODR
  FROM ku_katol_podr
  WHERE Kod_podr=:KU_OPERACIYA.Kod_podr;
 
  SELECT fio
  INTO :KU_OPERACIYA.MOL
  FROM ku_mol
  WHERE kod_mol=:KU_OPERACIYA.kod_mol;
  
  SELECT naim_os
  INTO :KU_OPERACIYA.NAIM
  FROM ku_os
  WHERE id_os=:KU_OPERACIYA.id_os;
Огромное спасибо за помошь)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2008, 00:09
Помогаю со студенческими работами здесь

При срабатывании составного тригшера, вылазиет ошибка ORA-00001 на триггер
Триггер: create or replace trigger upd_airline for update on airlines compound trigger ...

Необработанное тело POST-запроса
Здравствуйте! Возникла такая задача - необходимо получить необработанное тело post-запроса. Но...

ORA-01031, ORA-01034, ORA-27101
Доброе утро! Я вообще ни раз не базист, но появилась необходимость поставить oracle БД. Выбор...

Ислючение System.InvalidOperationException
Добрый день, всему доброму населению этого сайта!!! Прошу небольшой помощи у Вас в объяснении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru