|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 40 ![]() |
Bonjour ,
Voici mon pb: J'ai une form contenant 2 blocs: un bloc maître bloc1 et un bloc détail bloc2. J'aimerais supprimer lorsque je me place sur le bloc1 l'enregistrement en cours et tous les enregistrements enfants associés , sans être ennuyé par le déclencheur on check delete Master de Forms. je crée donc un déclencheur PRE-DELETE au niveau du bloc1 contenant le code suivant: GO_BLOCK(BLOC2); first _record; LOOP delete_record; Exit when :system.last_record = 'TRUE' ; next_record; END LOOP; Mais il passe même pas dans mon trigger PRE-DELETE et le déclencheur on check delete Master se déclenche ! Quelqu'un connaît il un moyen de réaliser cela proprement ? D'avance Merci. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Gère la relation maitre détail à la main.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 40 ![]() |
Je ne comprends pas
Tu veux dire qu'il faut supprimer la containte d'intégrité dans la relation ( c'est, en effet, une propriété de la relation). D'avance, merci. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Non, ne pas faire de relation.
1/ Créer un trigger WHEN-NEW-RECORD-INSTANCE au niveau du maitre qui va faire un execute query dans le détail. 2/ Mettre la clause where du détail pour ramener les enreg en fonction de la ligne du maitre.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 40 ![]() |
OK
Mais j'ai besoin de réaliser une suppression. (un véritable delete en base de la ligne maître et de toutes ses lignes détails associées). A quel niveau dois je réaliser cette suppression ? D'avance, Merci |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Ben soit tu le fait en PL_SQL (dans le PRE-DELETE),
soit tu le fait comme dans ton premier post (mais je trouve que c'est pas terrible et niveau perfs, avec + de 50 lignes ça va ramer). Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2007 Messages : 40 ![]() |
Ca marche (en PL dans le Pre Delete)
Merci beaucoup ! |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com