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 :
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;
Cette solution marche que si j'ai déjà l'enregistrement en base.
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.