Bonjour,
Environnement forms 6i et base 9
J'ai un bloc basé sur une table où j'ai plusieurs enregistrements qui sont affichés. Ma table ma_table1 par exemple a plusieurs colonnes et la clé est aussi formée de quelques colonnes par exemple.
L'objectif est de supprimer à l'avance tous les doublons afin que les autres y soient inserrées sans problème.
Dans le key-commit pour la validation de la saisie, j'ai ajouté ceci :
Cette solution marche que si j'ai déjà l'enregistrement en base.
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
21
22
23 ... v_compteur number; begin ... go_block('ma_table1'); first_record; loop if :system.record_status = 'INSERT' then --Traiter les nouveaux ... select count(*) into v_compteur from ma_table1 where condition_unicité; if v_comptueur <> 0 then --Existant en base, supprimer et eviter FRM-40508 delete_record; end if; end if; next_record; exit when :system.last_record = 'TRUE'; end loop; .... end;
Si l'enregistrement n'est pas en base, et je saisis deux fois un doubon dans le formulaire, ça ne marche plus.
Je ne peux pas utiliser le declencheur delete_record en PRE-INSERT, WHEN-VALIDATE-RECORD ou bien en ON-ERROR (bloc,formulaire).
Je n'ai pas de maitre/detail, juste un seul bloc.
Mon bloc étant basé sur une table je laisse forms gérer simplement l'insertion.
L'objectif est de pouvoir supprimer tous les doublons à l'avance et inserrer toutes les bonnes lignes par la suite sans problème.
Est-ce possible d'abord?
Merci pour votre aide.
Partager