Bonjour,


j'ai un bloc de données. Parmi les items de ce bloc de données, il y a deux items de type "Élément Liste". Cependant je n'aimerais pas que pour un enregistrement précis du bloc de données les deux items de type liste soit renseignés.

Donc si l'utilisateur veut choisir un élément (when_list_changed) sur l'un des items de type list, je parcours tous les enregistrements du bloc en vérifiant pour chaque enregistrement si les deux items de type élément liste sont renseignés.

S'il rencontre un enregistrement pareil alors il envoie un message à l'utilisateur et le renvoie à cet enregistrement sans toutefois prendre en compte la modification apportée sur le when_list_changed et ceci tant que l'utilisateur ne met pas un des items de type list à null voici le code que j'ai mis dans when_list_changed de chacun des items :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
declare
	cur_rec number:=get_block_property('CARACTERISTIQUE',CURRENT_RECORD);
	trouve boolean:=FALSE;
  LE$Fin exception ;
begin
	go_block('CARACTERISTIQUE');
	first_record;
	loop
		if (:CARACTERISTIQUE.NOM_COLO is not null and :CARACTERISTIQUE.NOMCOLPO is not null) then
			AFFICHE_MESSAGE(3117,to_char(3117));
			trouve:=TRUE;
			RAISE LE$Fin;
		end if;	
	exit when :system.last_record = 'TRUE' or trouve=TRUE;
		next_record;
	end loop;
	go_record(cur_rec);
	Exception 
		when LE$Fin then null;
end;
  1. Il envoie bien le message d'erreur mais les modifications continuent.
  2. J'aimerais que ce message soit appelé pas seulement si on essaie de modifier les items de type list mais aussi les autres items du bloc de données mais je sais pas trop dans quel déclencheur placer mon code.


Merci.