[Oracle] Probleem met definieren van trigger in developer

Pagina: 1
Acties:

  • Bram
  • Registratie: Oktober 1999
  • Niet online

Bram

..........

Topicstarter
De volgende trigger code werkt wel goed onder database niveau maar werkt niet op applicatie niveau. Hoe kunnen we deze trigger defineren zodat hij ook op oracle developer 2000 formulier werkt.

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
CREATE OR REPLACE TRIGGER tr_inschrijving
BEFORE UPDATE OR INSERT ON inschrijving
FOR EACH ROW
DECLARE
aantal number;
BEGIN
SELECT COUNT(*)
INTO aantal
FROM inschrijving i
WHERE i.schoolnaam = :new.schoolnaam
AND        i.plaatsnaam  = :new.plaatsnaam
AND      i.programma = :new.programma;
if :new.programma in (1,2,3,4,5,6,7,8,9,10,11,12) then
if aantal = 2 then
raise_application_error( -20000, ‘Maximum inschrijving voor programma ‘||
 :new.programma ||’ voor school ‘|| :new.schoolnaam ||’ is bereikt’);
end if;
end if;
if :new.programma in (13) then
if aantal = 4 then
raise_application_error( -20000, ‘Maximum inschrijving voor programma ‘||
 :new.programma ||’ voor school ‘|| :new.schoolnaam ||’ is bereikt’);
end if;
end if;
if :new.programma in (14) then
if aantal = 1 then
raise_application_error( -20000, ‘Maximum inschrijving voor programma ‘||
 :new.programma ||’ voor school ‘|| :new.schoolnaam ||’ is bereikt’);
end if;
end if;
END;

[ Voor 5% gewijzigd door curry684 op 24-09-2003 15:27 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Wat is 'niet werken'?
Als je de trigger in de database aanmaakt dan werkt deze voor alle applicaties welke op deze database werken.

Who is John Galt?


  • Bram
  • Registratie: Oktober 1999
  • Niet online

Bram

..........

Topicstarter
justmental schreef op 24 September 2003 @ 15:25:
Wat is 'niet werken'?
Als je de trigger in de database aanmaakt dan werkt deze voor alle applicaties welke op deze database werken.
Ja, hij werkt wel voor alle applicaties van de database. Maar we willen de code koppelen aan events handler van een formulier. Zodat bij het invoeren of wijzigen van een waarde van een veld, direct een foutmelding op het scherm getoond wordt.

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:50

JaQ

volgens mij staat dit zelfs in de handleiding. Op je tabel in forms developer 2000 een trigger aanmaken, zo te zien met het type on insert or update (misschien dat in de 2000 versie het handiger is om een procedure aan te maken en deze vervolgens vanuit een on-insert en een on-update trigger aan te roepen). Hoe dan ook, als je oplet tijdens je lessen, dan zou je dit moeten kunnen.

edit:

Ik zie Deventer in je profiel, dus je zal het leerboek Oracle Forms Developer/2000 Forms van academic service wel op je lijst hebben staan. Check pagina 145 e.v. en pagina 233 e.v., daar staat de hint naar je oplossing

[ Voor 24% gewijzigd door JaQ op 24-09-2003 15:39 ]

Egoist: A person of low taste, more interested in themselves than in me


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Een trigger koppel je niet aan een event-handler van een formulier.

Een trigger koppel je aan een 'event' dat gebeurt op een tabel, zoals bv op een DELETE, of een INSERT, etc...

https://fgheysels.github.io/


Verwijderd

Bram schreef op 24 September 2003 @ 15:34:
[...]
.... Zodat bij het invoeren of wijzigen van een waarde van een veld, direct een foutmelding op het scherm getoond wordt.
when-validate-item trigger.....

  • Bram
  • Registratie: Oktober 1999
  • Niet online

Bram

..........

Topicstarter
Thanks guys, het is inmiddels opgelost
Pagina: 1